【发布时间】:2018-10-19 15:00:00
【问题描述】:
我正在使用 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 rabbitmq spring-cloud-stream