Amq 使用+springboot
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相关推荐
- amq的demo及采坑实践
AMQ整合SpringBoot使用注解创建生产者的几种方式 amq配置类[AmqConfig] 创建amq的发送者 一. @Component+@Autowired+@PostConstruct 二. ...
- SpringBoot中使用AMQ的两种方式(Java配置、注解方式)
Java配置方式使用AMQ 1. 引入依赖(pom.xml) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...
- Springboot中使用多个AMQ
1.当springboot程序只用一个amq时,只需要在配置文件里面简单配置相关连接项(配置项名字不能改),得益于springboot的自动装配功能,我们不需要写额外的配置类就能在程序里面轻松使用. ...
- SpringBoot中使用AMQ的两种方式二(Java配置、注解方式)
使用@JmsListener注解方式 1. 工程目录 2. 引入依赖 <?xml version="1.0" encoding="UTF-8"?> ...
- SpringBoot集成AMQ消息队列
首先新建一个SpringBoot项目,下面开始正式的集成操作. 第一步: 打开pom.xml文件,添加依赖.这里等待maven仓库加载完成. <dependency><groupId ...
- springboot + rabbitmq 整合示例
几个概念说明: Broker:简单来说就是消息队列服务器实体. Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列. Queue:消息队列载体,每个消息都会被投入到一个或多个队列. B ...
- RabbitMQ,Springboot整合RabbitMQ实现 消息可靠性投递,Consumer ACK,TTL,死信队列,使用TTL+死信队列=延迟队列
搭建SpringBoot项目,用于演示 springboot版本 <!-- spring boot --><dependency><groupId>org.spri ...
- SpringBoot高级-消息-@RabbitListener@EnableRabbit
在实际开发中我们需要监听场景,比如我们之前举的例子,两个系统,订单系统,和我们库存系统,他们交互都是通过交互通过消息队列,某一个人下了单以后,将订单信息放到消息队列中,库存系统要实时监听队列里的内容, ...
- springboot之rabbitmq
一.RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的.所有 ...
最新文章
- 聚类分析和主成分分析
- ScheduledThreadPool中的Leader-Follow模式你知道不?
- java消息推送怎么实现_调用钉钉接口实现机器人推送消息
- 删除静态 IP 路由
- 文件系统之-JAVA Sftp远程操作:
- 纯 js 导出 excel
- Python之路---函数进阶
- Android 实践项目开发二
- Android 功耗(11)---Android 功耗分析之wakelock
- 开源自动化配置管理工具Puppet入门教程
- Linux命令解释之chmod
- python基础知识-python基础知识,python必背内容,一、python的基
- 屋子里有1到100号100盏关闭的灯
- Baby Audio Smooth Operator for Mac(智能信号平衡器插件)
- C++入门系列博客四 const define static关键字
- Android开发的经典入门教材和学习路线
- 密码学 SM3算法 Python实现
- 我的第一个开源项目Zplayer(模仿酷狗)
- 2020华为杯数学建模总结
- 游戏手机评测之摩托罗拉E398