Я использую Spring Cloud Stream и RabbitMq для обмена сообщениями между различными микросервисами.
Это мои настройки для публикации сообщения.
public interface OutputChannels {
static final String OUTPUT_CHANNEL = "outputChannel";
@Output
MessageChannel outputChannel();
}
.
@EnableBinding(OutputChannels.class)
@Log4j
public class OutputProducer {
@Autowired
private OutputChannels outputChannels;
public void createMessage(MyContent myContent) {
Message<MyContent> message = MessageBuilder
.withPayload(myContent)
.build();
outputChannels.outputChannel().send(message);
log.info("Sent message: " + message.getHeaders().getId() + myContent);
}
}
И установка для получения сообщения
public interface InputChannels {
String INPUT_CHANNEL = "inputChannel";
@Input
SubscribableChannel inputChannel();
}
.
@EnableBinding(InputChannels.class)
@Log
public class InputConsumer {
@StreamListener(InputChannels.INPUT_CHANNEL)
public void receive(Message<MyContent> message) {
MyContent myContent = message.getPayload();
log.info("Received message: " + message.getHeaders().getId() + ", " + myContent);
}
}
Я могу успешно обмениваться сообщениями с этой настройкой.Я ожидаю, что идентификаторы отправленного сообщения и полученного сообщения равны.Но они всегда разные UUID.
Есть ли способ, чтобы сообщение сохраняло один и тот же идентификатор на всем пути от производителя через RabbitMq до потребителя?