Spring Cloud Stream 4.0.4 rabbitmq 发送消息多function
在Spring Cloud Stream中,可以通过定义多个function来处理接收到的消息。每个function可以绑定到不同的消息通道上,并使用@StreamListener注解来指定需要监听的通道。
以下是一个简单的例子,展示了如何在Spring Cloud Stream中发送和接收多个消息function的消息:
@EnableBinding(value = {Processor.class})
public class MessageFunction {
@Autowired
private MessageChannel output;
// 发送消息的function
public void sendMessage(String message) {
this.output.send(MessageBuilder.withPayload(message).build());
}
// 接收并处理消息的function 1
@StreamListener(Processor.INPUT)
public void receiveMessage1(String payload) {
System.out.println("Function 1 received message: " + payload);
}
// 接收并处理消息的function 2
@StreamListener(Processor.INPUT)
public void receiveMessage2(String payload) {
System.out.println("Function 2 received message: " + payload);
}
}
在这个例子中,我们定义了一个名为MessageFunction
的类,它使用@EnableBinding
注解来指定绑定接口Processor.class
。sendMessage
方法用于发送消息,receiveMessage1
和receiveMessage2
方法则分别用于接收和处理消息。两个接收函数都绑定到了Processor.INPUT
通道上,因此它们都会接收到发送到RabbitMQ中该通道的消息。
确保你的application.yml
或application.properties
文件中配置了正确的RabbitMQ和Spring Cloud Stream相关配置。
spring:
cloud:
stream:
bindings:
output:
destination: my-destination
input:
destination: my-destination
rabbit:
bindings:
input:
consumer:
bindingRoutingKey: my-routing-key
destinationExchange: my-exchange
在这个配置中,my-destination
是绑定的目的地,my-exchange
是使用的交换机,my-routing-key
是路由键。根据你的RabbitMQ配置,这些值可能需要修改。
评论已关闭