博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot~rabbitmq的队列初始化和绑定
阅读量:6118 次
发布时间:2019-06-21

本文共 3346 字,大约阅读时间需要 11 分钟。

配置文件,在rabbit中自动建立exchange,queue和绑定它们的关系

  1. 代码里初始化exchange
  2. 代码里初始化queue
  3. 代码里绑定exchange,queue和routekey
  4. 配置文件,直接声明vhost

代码里初始化exchange

/**   * rabbitMq里初始化exchange.   *   * @return   */  @Bean  public TopicExchange crmExchange() {    return new TopicExchange(EXCHANGE);  }

代码里初始化queue

/**   * rabbitMq里初始化队列crm.hello.   *   * @return   */  @Bean  public Queue helloQueue() {    return new Queue(HELLO);  }

代码里绑定exchange,queue和routekey

/**   * 绑定exchange & queue & routekey.   *   * @param queueMessage 队列   * @param exchange     交换机   * @param routekey     路由   * @return   */  public Binding bindingExchange(Queue queueMessage, TopicExchange exchange, String routekey) {    return BindingBuilder.bind(queueMessage).to(exchange).with(routekey);  }

配置文件

spring:    rabbitmq:    host: localhost    port: 5672    username: guest    password: guest    virtual-host: lind

完整代码

package com.lind.microservice.productCenter.mq;import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.BindingBuilder;import org.springframework.amqp.core.Queue;import org.springframework.amqp.core.TopicExchange;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * amqp配置. */@Configurationpublic class AmqpConfig {  /**   * 交换机.   */  public final static String EXCHANGE = "crm";  /**   * hello队列.   */  public final static String HELLO = "crm.hello";  /**   * 建立订单队列.   */  public final static String LIND_GENERATE_ORDER = "crm.generate.order";  /**   * 绑定exchange & queue & routekey.   *   * @param queueMessage 队列   * @param exchange     交换机   * @param routekey     路由   * @return   */  public Binding bindingExchange(Queue queueMessage, TopicExchange exchange, String routekey) {    return BindingBuilder.bind(queueMessage).to(exchange).with(routekey);  }  /**   * rabbitMq里初始化exchange.   *   * @return   */  @Bean  public TopicExchange crmExchange() {    return new TopicExchange(EXCHANGE);  }  /**   * rabbitMq里初始化队列crm.hello.   *   * @return   */  @Bean  public Queue helloQueue() {    return new Queue(HELLO);  }  /**   * rabbitMq里初始化队列crm.generate.order.   *   * @return   */  @Bean  public Queue orderQueue() {    return new Queue(LIND_GENERATE_ORDER);  }}

队列发布者

package com.lind.microservice.productCenter.mq;import java.util.Date;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;@Configurationpublic class HelloPublisher {  @Autowired  AmqpTemplate rabbitTemplate;  @Autowired  AmqpConfig amqpConfig;  public void hello() {    String context = "hello " + new Date();    System.out.println("HelloPublisher : " + context);    amqpConfig.bindingExchange(        amqpConfig.helloQueue(),        amqpConfig.crmExchange(),        "crm.hello.#"    );    this.rabbitTemplate.convertAndSend(AmqpConfig.EXCHANGE, AmqpConfig.HELLO, context);  }}

队列订阅者

package com.lind.microservice.productCenter.mq;import org.springframework.amqp.rabbit.annotation.RabbitHandler;import org.springframework.amqp.rabbit.annotation.RabbitListener;import org.springframework.stereotype.Component;@Component@RabbitListener(queues = AmqpConfig.HELLO)public class HelloSubscriber {  @RabbitHandler  public void process(String hello) {    System.out.println("HelloSubscriber  : " + hello);  }}

转载地址:http://ywmka.baihongyu.com/

你可能感兴趣的文章
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
Docker - 创建支持SSH服务的容器镜像
查看>>
[TC13761]Mutalisk
查看>>
三级菜单
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>
HDU 4377 Sub Sequence[串构造]
查看>>