У меня есть функция Azure, выполненную в Java, которая запускается сообщением RabbitMQ в определенной очереди. Я видел, что outputBinding.setValue не сразу отправляет сообщение, а только устанавливает значение, которое будет использоваться в качестве вывода функции.import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.OutputBinding;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.rabbitmq.annotation.RabbitMQOutput;
import com.microsoft.azure.functions.rabbitmq.annotation.RabbitMQTrigger;
public class MyFunction {
@FunctionName("MyFunction")
public void run(
@RabbitMQTrigger(connectionStringSetting = "RABBIT_URL", queueName = "input-queue")
InputMessage message,
@RabbitMQOutput(connectionStringSetting = "RABBIT_URL", queueName = "output-queue")
OutputBinding output,
final ExecutionContext context) {
// some code...
output.setValue(new OutputMessage(OutputMessage.Status.PROCESSING, "some other info 1"));
// other code...
output.setValue(new OutputMessage(OutputMessage.Status.DONE, "some other info 2"));
}
}
< /code>
public record OutputMessage (Status status, String info) {
public enum Status {
PROCESSING,
DONE
}
}
< /code>
Сообщение со статусом «обработка» должна быть запущена до того, как функция сделает свое дело, но если я проверю функцию и перейду к интерфейсу управления Rabbitmq, я вижу, что в очереди вывода есть только 1 сообщение, а не 2, и это то, что со статусом «выполнено». Библиотека/ES? Или мне нужно импортировать библиотеку RabbitMQ, подключиться к очереди и вручную отправлять сообщение через это?
Подробнее здесь: https://stackoverflow.com/questions/796 ... e-messages