springamqp的使用

springamqp使用步骤

在服务发送消息

引入依赖


    org.springframework.boot
    spring-boot-starter-amqp

配置信息

spring:
  rabbitmq:
    host: 192.168.1.1
    username: name
    password: password
    virtual-host: /fuwu 
    template:
      exchange: mingzi
    publisher-confirms: true
  • template:有关AmqpTemplate的配置
    • exchange:缺省的交换机名称,此处配置后,发送消息如果不指定交换机就会使用这个
  • publisher-confirms:生产者确认机制,确保消息会正确发送,如果发送失败会有错误回执,从而触发重试

在消息发送方的service中设置消息发送的方法

private void sendMessage(Long id, String type){
    // 发送消息
    try {
        this.amqpTemplate.convertAndSend("item." + type, id);
    } catch (Exception e) {
        logger.error("{}商品消息发送异常,商品id:{}", type, id, e);
    }
}

这里没有指定交换机,因此默认发送到了配置中的:leyou.item.exchange

注意:这里要把所有异常都try起来,不能让消息的发送影响到正常的业务逻辑

在对应的数据操作时, 使用方法sendMessage(id,type);

在消息接收方

引入依赖


    org.springframework.boot
    spring-boot-starter-amqp

添加配置

spring:
  rabbitmq:
    host: 192.168.1.1
    username: name
    password: password
    virtual-host: /fuwu 

这里只是接收消息而不发送,所以不用配置template相关内容。

在接收方编写监听器

@Component
public class GoodsListener {
    @RabbitListener(bindings = @QueueBinding(
        value = @Queue(value = "队列名字",durable = "true"),
        exchange = @Exchange(value = "交换机名字",
        ignoreDeclarationExceptions  = "true",type = ExchangeTypes.TOPIC)
        key={"发送方的消息名字","发送方的消息名字"}
    ))
    public void changes(){
        相应的操作;
    }
}

你可能感兴趣的:(springamqp的使用)