相关文章推荐
胆小的奔马  ·  SQL ...·  3 年前    · 
import org . apache . activemq . ActiveMQConnectionFactory ; import org . springframework . beans . factory . annotation . Qualifier ; import org . springframework . beans . factory . annotation . Value ; import org . springframework . context . annotation . Bean ; import org . springframework . context . annotation . Configuration ; import org . springframework . context . annotation . Primary ; import org . springframework . jms . config . DefaultJmsListenerContainerFactory ; import org . springframework . jms . config . JmsListenerContainerFactory ; import org . springframework . jms . core . JmsTemplate ; * @program: service * @description activemq 配置类 * @author: wys * @create: 2020-06-03 @Configuration public class ActiveMqConfigs { * one mq 地址 账户密码注入 * @param brokerUrl * @param username * @param password * @return @Bean ( name = "oneConnectionFactory" ) @Primary public ActiveMQConnectionFactory oneConnectionFactory ( @Value ( "${activemq.one.brokerUrl}" ) String brokerUrl , @Value ( "${activemq.one.user}" ) String username , @Value ( "${activemq.one.password}" ) String password ) { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory ( ) ; factory . setBrokerURL ( brokerUrl ) ; factory . setUserName ( username ) ; factory . setPassword ( password ) ; return factory ; * one JmsTemplate生成 * @param connectionFactory * @param pubSubDmain * @return @Bean ( name = "oneJmsTemplate" ) @Primary public JmsTemplate oneJmsTemplate ( @Qualifier ( "oneConnectionFactory" ) ActiveMQConnectionFactory connectionFactory , @Value ( "${activemq.one.pub-sub-domain}" ) boolean pubSubDmain ) { JmsTemplate jmsTemplate = new JmsTemplate ( connectionFactory ) ; jmsTemplate . setPubSubDomain ( pubSubDmain ) ; return jmsTemplate ; * one JmsListener工厂生成 * @param connectionFactory * @param pubSubDmain * @return @Bean ( name = "oneJmsListenerContainerFactory" ) @Primary public JmsListenerContainerFactory oneJmsListenerContainerFactory ( @Qualifier ( "oneConnectionFactory" ) ActiveMQConnectionFactory connectionFactory , @Value ( "${activemq.one.pub-sub-domain}" ) boolean pubSubDmain ) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory ( ) ; factory . setConnectionFactory ( connectionFactory ) ; factory . setPubSubDomain ( pubSubDmain ) ; return factory ; * two mq 地址 账号密码注入 * @param brokerUrl * @param username * @param password * @return @Bean ( name = "twoConnectionFactory" ) public ActiveMQConnectionFactory twoConnectionFactory ( @Value ( "${activemq.two.brokerUrl}" ) String brokerUrl , @Value ( "${activemq.two.user}" ) String username , @Value ( "${activemq.two.password}" ) String password ) { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory ( ) ; factory . setBrokerURL ( brokerUrl ) ; factory . setUserName ( username ) ; factory . setPassword ( password ) ; return factory ; * two JmsTemplate生成 * @param connectionFactory * @param pubSubDmain * @return @Bean ( name = "twoJmsTemplate" ) public JmsTemplate twoJmsTemplate ( @Qualifier ( "twoConnectionFactory" ) ActiveMQConnectionFactory connectionFactory , @Value ( "${activemq.two.pub-sub-domain}" ) boolean pubSubDmain ) { JmsTemplate jmsTemplate = new JmsTemplate ( connectionFactory ) ; jmsTemplate . setPubSubDomain ( pubSubDmain ) ; return jmsTemplate ; * two JmsListener工厂生成 * @param connectionFactory * @param pubSubDmain * @return @Bean ( name = "twoJmsListenerContainerFactory" ) public JmsListenerContainerFactory twoJmsListenerContainerFactory ( @Qualifier ( "twoConnectionFactory" ) ActiveMQConnectionFactory connectionFactory , @Value ( "${activemq.two.pub-sub-domain}" ) boolean pubSubDmain ) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory ( ) ; factory . setConnectionFactory ( connectionFactory ) ; factory . setPubSubDomain ( pubSubDmain ) ; return factory ;

3.调用JmsTemplate发送mq

只要在注入对象前加@Qualifier注解就可以了,当然也可以用 @Resource注解。
jmsTemplate.convertAndSend方法的第一个参数是要发送的mq名称,第二个参数是mq的内容。

 private Logger log = LoggerFactory.getLogger(this.getClass());
    @Autowired
    @Qualifier("oneJmsTemplate")//或twoJmsTemplate
    private JmsTemplate jmsTemplate;
     * 查询发送测试
    public void sendMq() {
        try {
            jmsTemplate.convertAndSend("mqName","content");
        } catch (Exception e) {
            log.error("SendMsgController.sendMq()", e);

4. 接收mq -@JmsListener注解添加containerFactory配置

* 接收one mq方法 * @param message @JmsListener(destination = "${msgListener.oneMqName}" ,containerFactory = "oneJmsListenerContainerFactory") public void receiveQueueOne(String message) { if (StringUtils.isEmpty(message)) { return; // todo * 接收two mq方法 * @param message @JmsListener(destination = "${msgListener.twoMqName}" ,containerFactory = "twoJmsListenerContainerFactory") public void receiveQueueTwo(String message) { if (StringUtils.isEmpty(message)) { return; // todo

如果接收相同ip相同queues或topics的队列,就不用增加配置,直接调用即可. 如和one的ip相同,直接复制receiveQueueOne方法,修改方法名和注解上的destination配置即可,containerFactory配置不用修改。

springboot链接两个ActiveMq(多个)1.修改yml文件建议:最好把原来的配置去了 。spring:# activemq:# broker-url: tcp://127.0.0.1:61616# user: admin# password: admin# jms: #true:topic模式,false:queue模式# pub-sub-domain: trueactivemq: one: brokerUrl: tcp:/ ActiveMQ 多机房容灾 ActiveMQ 带有一个 。 其中的多台 ActiveMQ Broker 彼此应该使用桥接方式相连,否则可能会出现没有 Consumer 的问题。但在多机房 ActiveMQ 集群中,考虑到跨机房的网络速度,不同机房的 Broker 之间并没有桥接。因此,为了保证每一个机房的 Broker 上都有足够数量的 Consumer,Consumer 需要分机房进行单独部署。这就产生了重复配置的问题。 Spring JMS 和 Spring Boot ActiveMQ Starter 对此场景并没有考虑。本项目的一个主要目的就是解决这一问题,简化多机房 ActiveMQ 的配置。 注:本项目并不强依赖于 Spring Boot,但为了简化开发使用,设计为 Spring Bo #mq引入 spring.default.activemq.brokerUrl=tcp://192.168.1.12:61616?wireFormat.maxInactivityDuration=10000 spring.default.activemq.user=admin spring.default.activemq.password=admin spring.mq119.activemq.brokerUrl=tcp://119.251.214..
在我们的日常工作中,大部分情况下,我们的服务一般只需要连接某一个存放消息的rabbitMQ服务器。但是,现在多用微服务和分布式的开发部署模式,一个服务连接多个rabbitMQ服务器的需求也难以避免。最近刚好遇到,并实现,发出步骤,避免大家走弯路。 首先是yml或者propertes文件中的配置信息: spring.rabbitmq.first.host = XXXX spring.rabbitmq.first.port = XXXX spring.rabbitmq.first.username = XXX
一、消息队列概述 1、什么是消息队列? 消息队列是消息中间件的一种实现方式。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前的消息队列有:ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。本篇主要对activeMQ集成SpringBoot项目做详解。 消息队列在实际应用中常用的使用场景有异步处理,应用解耦,流量削锋和消息通讯四个场景。   2、修改里面的activemq.xml文件    ①brokerName不能和原来的重复     ②数据存放的文件名称不能重复,比如<kahaDB directory = "${activemq.data}/kahadb2"/>     ③所有涉及的transportCon...
在这个过程中调用三方通道(短信或银行通道)都比较耗时,同时账务处理可能也是由专门的账务系统进行处理。那么,为了提高并发和相应速度,后面的三个操作都可以通过异步进行处理。这就用到了消息队列。 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。 市面上比较常见的消息队列有:Act
Apache ActiveMQ ™ is the most popular and powerful open source messaging and Integration Patterns server. Apache ActiveMQ is fast, supports many Cross Language Clien
ActiveMQ 是一个流行的、开源的消息队列(Message Queue)和消息中间件(Message Middleware)实现,它支持多种语言和平台。以下是一些学习 ActiveMQ 的教程: 1. ActiveMQ 官方文档:ActiveMQ 的官方文档提供了全面而详细的说明,涵盖了 ActiveMQ 的基本概念、使用方法、配置、开发和集成等方面。 2. Apache ActiveMQ 教程:这是一个适合初学者的 ActiveMQ 教程,涵盖了 ActiveMQ 的基本概念、配置、使用和集成等方面,并提供了许多示例代码。 3. Spring 整合 ActiveMQ 教程:这是一个介绍如何使用 Spring 框架集成 ActiveMQ 的教程,包括 Spring 中如何配置 ActiveMQ、如何使用 Spring JMS API 和 Spring Boot 中如何使用 ActiveMQ 等内容。 4. ActiveMQ 实战教程:这是一个基于实战的 ActiveMQ 教程,介绍了如何使用 ActiveMQ 解决实际问题,例如如何使用 ActiveMQ 实现异步通信、如何使用 ActiveMQ 实现分布式系统、如何使用 ActiveMQ 实现发布-订阅等等。 希望以上推荐的教程能帮助您更好地学习和使用 ActiveMQ
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans 34010
JSON解析出错 Cause: java.lang.IllegalStateException: No typehandler found for property xxx Daemon-: maven打包失败 Cannot create resource output directory[已解决] 武yuanshun: liunx的话 可以用ps -ef |grep xxx 来查询一下有没有相关进程 如:16735 target 然后使用kill -9 16735 结束进程即可。具体grep 后面写什么 不太确定,没有在liunx遇到过这个情况,可以试试 grep java、grep maven、grep target等 maven打包失败 Cannot create resource output directory[已解决] 你好,我想请教一下,如果我是在Ubuntu里用mvn打包出现了这个问题怎么解决 Your installed version of Erlang (6.2) is too old. Please install a more recent version.[已解决] 武yuanshun: 卸载正常吗 是否还是提示之前的版本,如果还是提示之前版本 就再安装一下之前的版本 使用它的卸载程序卸载如我最后一个图 Your installed version of Erlang (6.2) is too old. Please install a more recent version.[已解决] 过客执念: 为什么我重新安装之后还是说版本太低,而且我安装的是25.1显示的是20.0