Amq 使用+springboot

AMQ是JMS 是java的标准

spring 提供了 JmsTemplate @JmsListerner @EnableJms

使用:

配置

@Configuration
public class AmqConfig {//配置Amq的连接池@Bean(name = "primaryMqConnectionFactory")@Primarypublic ActiveMQConnectionFactory primaryMqConnectionFactory() {ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();String brokerUrl = environment.getProperty("spring.activemq.broker-url");factory.setBrokerURL(brokerUrl);String userName = environment.getProperty("spring.activemq.user");factory.setUserName(userName);String passWord = environment.getProperty("spring.activemq.password");factory.setPassword(passWord);factory.setCloseTimeout(2000);factory.setConnectResponseTimeout(2000);factory.setSendTimeout(2000);return factory;}//Amq的jmsTemplate  和jdbc、redis的类似 操作mq@Bean(name = "primaryTemplate")@Primarypublic JmsTemplate primaryTemplate(@Qualifier("primaryMqConnectionFactory")ActiveMQConnectionFactory connectionFactory) {JmsTemplate primaryTemplate = new JmsTemplate(connectionFactory);return primaryTemplate;}//topic方式的连接工厂@Bean(name = "primaryContainerFactoryTopic")public JmsListenerContainerFactory<?> primaryContainerFactoryTopic(@Qualifier("primaryMqConnectionFactory")ConnectionFactory connectionFactory) {DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();bean.setConnectionFactory(connectionFactory);bean.setPubSubDomain(true);return bean;}//queue方式的连接工厂@Bean(name = "primaryContainerFactoryQueue")public JmsListenerContainerFactory<?> primaryContainerFactoryQueue(@Qualifier("primaryMqConnectionFactory")ConnectionFactory connectionFactory) {DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();bean.setConnectionFactory(connectionFactory);bean.setPubSubDomain(false);return bean;}
}
//MQ的消费者 接口
public interface NotifyCommonConsumer {//线程池ScheduledExecutorService CONSUMER_POOL = new ScheduledThreadPoolExecutor(2,new BasicThreadFactory.Builder().namingPattern("yctm-web-notify-pool-%d").daemon(true).build());/*** 处理接收消息* @param connectionFactory* @throws NotifyException*/void mqttConsumer(NotifyConnectionFactory connectionFactory) throws NotifyException;
}
//queue消费
@Component
public class EventNotifyConsumer extends CommonConsumer {//参数是队列名称  对应的连接工厂@JmsListener(destination = ConstantParams.EVENT_QUEUE_NAME, containerFactory = "primaryContainerFactoryQueue")public void subscribeAlarmHostEvent(Message message){//线程池的提交任务处理consumerPool.execute(() -> handleRadarMessage(message));}//消息处理函数private void handleRadarMessage(Message message) {String event = super.message2String(message);}
}
//topic 消费处理
@Component
public class NmsNotifyConsumer extends CommonConsumer {// topic的工厂@JmsListener(destination = ConstantParams.NMS_NOTIFY_TOPIC, containerFactory = "primaryContainerFactoryTopic")public void subscribeAlarmHostEvent(Message message) {consumerPool.execute(() -> handleNmsMessage(message));}private void handleNmsMessage(Message message) {}
}

生产者

//topic queue 生产者
@Component
public class CommonProducer {@Autowiredprivate JmsMessagingTemplate primaryTemplate;public CommonProducer() {}public void sendMessage(Destination topic, String msg) {this.primaryTemplate.convertAndSend(topic, msg);}
}//topic 配置
@Configuration
public class NmsTopicConfig {@Bean(name = "nmsTopic")public Topic nmsTopic(){return new ActiveMQTopic(ConstantParams.NMS_NOTIFY_TOPIC);}
}
//queue配置
@Configuration
public class RadarQueueConfig {@Bean(name = "radarQueue")public Queue radarQueue(){return new ActiveMQQueue(ConstantParams.EVENT_RADAR_QUEUE_NAME);}
}@RestController
@ApiIgnore
@RequestMapping(value = "/v1/test")
public class TestAmq {@Resourceprivate CommonProducer producer;@AutowiredTopic nmsTopic;@GetMapping("/test")public String getById(@RequestParam Integer id) {//发送消息到topicproducer.sendMessage(nmsTopic,"aaa");return "aaa";}
}

Amq 使用+springboot相关推荐

  1. amq的demo及采坑实践

    AMQ整合SpringBoot使用注解创建生产者的几种方式 amq配置类[AmqConfig] 创建amq的发送者 一. @Component+@Autowired+@PostConstruct 二. ...

  2. SpringBoot中使用AMQ的两种方式(Java配置、注解方式)

    Java配置方式使用AMQ 1. 引入依赖(pom.xml) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...

  3. Springboot中使用多个AMQ

    1.当springboot程序只用一个amq时,只需要在配置文件里面简单配置相关连接项(配置项名字不能改),得益于springboot的自动装配功能,我们不需要写额外的配置类就能在程序里面轻松使用. ...

  4. SpringBoot中使用AMQ的两种方式二(Java配置、注解方式)

    使用@JmsListener注解方式 1. 工程目录 2. 引入依赖 <?xml version="1.0" encoding="UTF-8"?> ...

  5. SpringBoot集成AMQ消息队列

    首先新建一个SpringBoot项目,下面开始正式的集成操作. 第一步: 打开pom.xml文件,添加依赖.这里等待maven仓库加载完成. <dependency><groupId ...

  6. springboot + rabbitmq 整合示例

    几个概念说明: Broker:简单来说就是消息队列服务器实体. Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列. Queue:消息队列载体,每个消息都会被投入到一个或多个队列. B ...

  7. RabbitMQ,Springboot整合RabbitMQ实现 消息可靠性投递,Consumer ACK,TTL,死信队列,使用TTL+死信队列=延迟队列

    搭建SpringBoot项目,用于演示 springboot版本 <!-- spring boot --><dependency><groupId>org.spri ...

  8. SpringBoot高级-消息-@RabbitListener@EnableRabbit

    在实际开发中我们需要监听场景,比如我们之前举的例子,两个系统,订单系统,和我们库存系统,他们交互都是通过交互通过消息队列,某一个人下了单以后,将订单信息放到消息队列中,库存系统要实时监听队列里的内容, ...

  9. springboot之rabbitmq

    一.RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的.所有 ...

最新文章

  1. 聚类分析和主成分分析
  2. ScheduledThreadPool中的Leader-Follow模式你知道不?
  3. java消息推送怎么实现_调用钉钉接口实现机器人推送消息
  4. 删除静态 IP 路由
  5. 文件系统之-JAVA Sftp远程操作:
  6. 纯 js 导出 excel
  7. Python之路---函数进阶
  8. Android 实践项目开发二
  9. Android 功耗(11)---Android 功耗分析之wakelock
  10. 开源自动化配置管理工具Puppet入门教程
  11. Linux命令解释之chmod
  12. python基础知识-python基础知识,python必背内容,一、python的基
  13. 屋子里有1到100号100盏关闭的灯
  14. Baby Audio Smooth Operator for Mac(智能信号平衡器插件)
  15. C++入门系列博客四 const define static关键字
  16. Android开发的经典入门教材和学习路线
  17. 密码学 SM3算法 Python实现
  18. 我的第一个开源项目Zplayer(模仿酷狗)
  19. 2020华为杯数学建模总结
  20. 游戏手机评测之摩托罗拉E398

热门文章

  1. 视频教程-零基础学Python-Python
  2. SQL Server 跟踪标志 3226
  3. 手机SD卡数据恢复,就是这么简单
  4. BUAA数据结构作业——基于Huffman码的文件压缩工具
  5. Microsoft Teams 团队的删除,恢复,归档与保留
  6. c#桌面应用程序如何添加弹出式广告
  7. Dockerfile如何制作mysql镜像
  8. t’触发器真值表和状态方程_触发器真值表
  9. 计算机高级可以优先聘中级职称吗,软考高级职称可以当做中级职称用吗?
  10. 办公必备的大数据分析利器,数据分析工具推荐