设为首页 收藏本站
查看: 3405|回复: 0

[经验分享] (转) RabbitMQ学习之spring整合发送同步消息(注解实现)

[复制链接]

尚未签到

发表于 2017-12-8 21:39:37 | 显示全部楼层 |阅读模式
  http://blog.csdn.net/zhu_tianwei/article/details/40918477
  上一篇文章通过xml配置rabbitmq的rabbitTemplate,本节将使用注解的形式实现同步消息的发送。
  1.注解配置AnnotationConfiguration.Java



[java] view plain copy
  print?

  • package cn.slimsmart.rabbitmq.demo.spring.sync;  

  • import org.springframework.amqp.core.AmqpAdmin;  
  • import org.springframework.amqp.core.Queue;  
  • import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;  
  • import org.springframework.amqp.rabbit.connection.ConnectionFactory;  
  • import org.springframework.amqp.rabbit.core.RabbitAdmin;  
  • import org.springframework.amqp.rabbit.core.RabbitTemplate;  
  • import org.springframework.context.annotation.Bean;  
  • import org.springframework.context.annotation.Configuration;  

  • import com.rabbitmq.client.AMQP;  

  • @Configuration  
  • public class AnnotationConfiguration {  

  •     //指定队列名称 routingkey的名称默认为Queue的名称,使用Exchange类型为DirectExchange  
  •     protected String springQueueDemo = "spring-queue-demo";  

  •     //创建链接  
  •     @Bean  
  •     public ConnectionFactory connectionFactory() {  
  •         CachingConnectionFactory connectionFactory = new CachingConnectionFactory("192.168.36.102");  
  •         connectionFactory.setUsername("admin");  
  •         connectionFactory.setPassword("admin");  
  •         connectionFactory.setPort(AMQP.PROTOCOL.PORT);
  •         return connectionFactory;  
  •     }

  •     //创建rabbitAdmin 代理类  
  •     @Bean  
  •     public AmqpAdmin amqpAdmin() {  
  •         return new RabbitAdmin(connectionFactory());  
  •     }

  •     //创建rabbitTemplate 消息模板类  
  •     @Bean  
  •     public RabbitTemplate rabbitTemplate() {  
  •         RabbitTemplate template = new RabbitTemplate(connectionFactory());  
  •         //The routing key is set to the name of the queue by the broker for the default exchange.  
  •         template.setRoutingKey(this.springQueueDemo);  
  •         //Where we will synchronously receive messages from  
  •         template.setQueue(this.springQueueDemo);  
  •         return template;  
  •     }

  •     //  
  •     // Every queue is bound to the default direct exchange  
  •     public Queue helloWorldQueue() {  
  •         return new Queue(this.springQueueDemo);  
  •     }

  •     /*
  •     @Bean  
  •     public Binding binding() {
  •         return declare(new Binding(helloWorldQueue(), defaultDirectExchange()));
  •     }*/  

  •     /*   
  •     @Bean
  •     public TopicExchange helloExchange() {
  •         return declare(new TopicExchange("hello.world.exchange"));
  •     }*/  

  •     /*
  •     public Queue declareUniqueQueue(String namePrefix) {
  •         Queue queue = new Queue(namePrefix + "-" + UUID.randomUUID());
  •         rabbitAdminTemplate().declareQueue(queue);
  •         return queue;
  •     }
  •      
  •     // if the default exchange isn't configured to your liking....
  •     @Bean Binding declareP2PBinding(Queue queue, DirectExchange exchange) {
  •         return declare(new Binding(queue, exchange, queue.getName()));
  •     }
  •      
  •     @Bean Binding declarePubSubBinding(String queuePrefix, FanoutExchange exchange) {
  •         return declare(new Binding(declareUniqueQueue(queuePrefix), exchange));
  •     }
  •      
  •     @Bean Binding declarePubSubBinding(UniqueQueue uniqueQueue, TopicExchange exchange) {
  •         return declare(new Binding(uniqueQueue, exchange));
  •     }
  •      
  •     @Bean Binding declarePubSubBinding(String queuePrefix, TopicExchange exchange, String routingKey) {
  •         return declare(new Binding(declareUniqueQueue(queuePrefix), exchange, routingKey));
  •     }*/  

  • }
  2.消费者代码Consumer.java



[java] view plain copy
  print?

  • package cn.slimsmart.rabbitmq.demo.spring.sync;  

  • import org.springframework.amqp.core.AmqpTemplate;  
  • import org.springframework.context.ApplicationContext;  
  • import org.springframework.context.annotation.AnnotationConfigApplicationContext;  

  • public class Consumer {  
  •     public static void main(String[] args) {  
  •         ApplicationContext context = new AnnotationConfigApplicationContext(AnnotationConfiguration.class);  
  •         AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);  
  •         System.out.println("Received: " + amqpTemplate.receiveAndConvert());  
  •     }
  • }
  3.生产者代码Producer.java



[java] view plain copy
  print?

  • package cn.slimsmart.rabbitmq.demo.spring.sync;  

  • import org.springframework.amqp.core.AmqpTemplate;  
  • import org.springframework.context.ApplicationContext;  
  • import org.springframework.context.annotation.AnnotationConfigApplicationContext;  

  • public class Producer {  
  •     public static void main(String[] args) {  
  •         ApplicationContext context = new AnnotationConfigApplicationContext(AnnotationConfiguration.class);  
  •         AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);  
  •         amqpTemplate.convertAndSend("Hello World");  
  •         System.out.println("Sent: Hello World");  
  •     }
  • }
  运行生产者向队列中发送一条消息,再运行消费者消费消息。
  另外,声明一个队列代码如:



[java] view plain copy
  print?

  • ApplicationContext context =  new AnnotationConfigApplicationContext(AnnotationConfiguration.class);  
  •         AmqpAdmin amqpAdmin = context.getBean(AmqpAdmin.class);  
  •         Queue helloWorldQueue = new Queue("create.world.queue");  
  •         amqpAdmin.declareQueue(helloWorldQueue);

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-422271-1-1.html 上篇帖子: rabbitmq配置 下篇帖子: RabbitMQ(四)消息确认(发送确认,接收确认)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表