[英]Sending a Message with Spring Cloud Stream and RabbitMq changes ID
我正在使用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);
}
}
我能够使用此设置成功交换消息。 我希望发送的消息和接收的消息的ID相等。 但是它们始终是不同的UUID。
从生产者到RabbitMq到消费者,消息是否一直保持相同的ID?
Spring Messaging消息是不可变的。 他们每次被突变都会获得一个新的ID。
您可以使用自定义标头或IntegrationMessageHeaderAccessor.CORRELATION_ID
来传达常量值; 在大多数使用情况下,相关性ID标头是由应用程序在消息传输开始时设置为ID标头的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.