0
点赞
收藏
分享

微信扫一扫

RabbitMQ的注解使用

英乐 2023-02-21 阅读 62


1. 手动在 RabbitMQ 管理界面创建 myQueue队列

  1. 发送者代码:

@Autowired
private AmqpTemplate amqpTemplate;

public void send(){
String msg = "mqsender send ..." + new Date();
amqpTemplate.convertAndSend("myQueue", msg);
}

  1. 接收者代码

/**
* 需要手动在RabbitMQ management 界面下创建一个队列 myQueue
* @param msg
*/
@RabbitListener(queues = "myQueue")
public void receive(String msg){
log.info("mqReceive = {}" , msg );
}

2. 通过注解自动创建 myQueue 队列

/**
*
* @param msg
*/
@RabbitListener(queuesToDeclare = @Queue("myQueue"))
public void receive(String msg){
log.info("mqReceive = {}" , msg );
}

3. 自动创建,queue 和 exchange 绑定

// 3. 自动创建,queue 和 exchange 绑定
@RabbitListener(bindings = @QueueBinding(
value = @Queue("myQueue"),
exchange = @Exchange("myExchange")
))
public void receive(String msg){
log.info("mqReceive = {}" , msg );
}

4. 实战模拟消息分组

/**----------- 模拟消息分组 --------------------*/
/**
* 数码供应商服务 接收消息
* 消息发到交换机,交换机根据不同的key 发送到不同的队列
*/
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange("myOrder"),
key = "computer",
value = @Queue("computerOrder")
))
public void receiveComputer(String msg){
log.info(" receiveComputer service = {}" , msg );
}
/**
* 水果供应商服务 接收消息
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue("fruitOrder"),
key = "fruit",
exchange = @Exchange("myOrder")
))
public void receiveFruit(String msg){
log.info(" receiveFruit service = {}" , msg );
}

@RabbitListener(bindings = @QueueBinding(
value = @Queue("queue002"),
exchange = @Exchange(value = "headers-exchange", type = ExchangeTypes.HEADERS),
arguments = {
@Argument(name = "key-one", value = "1"),
@Argument(name = "key-two", value = "2"),
@Argument(name = "x-match", value = "any")
}))
public void consumer003(String msg) {
System.out.println("消费者===>消费<===消息message: " + msg);
}


举报

相关推荐

0 条评论