springboot整合ActiveMQ

整合步骤

1:activeMq起步依赖

1

2

3

4

<dependency

    <groupId>org.springframework.boot</groupId

    <artifactId>spring-boot-starter-activemq</artifactId

</dependency>

2:配置mq信息

# ActiveMQ broker 地址  

spring.activemq.broker-url=tcp://192.168.25.134:61616

#broke登陆用户名

spring.activemq.user=zhu

#broker登陆密码

spring.activemq.password=zhu.123

#连接池的信息

# See PooledConnectionFactory.

#spring.activemq.pool.configuration.*=

#Whether a PooledConnectionFactory should be created instead of a regular ConnectionFactory.

#spring.activemq.pool.enabled=false 

#Connection expiration timeout in milliseconds.

#spring.activemq.pool.expiry-timeout=0 

#Connection idle timeout in milliseconds.

#spring.activemq.pool.idle-timeout=30000 

#Maximum number of pooled connections.

#spring.activemq.pool.max-connections=1 

 

3:在容器中定义queue和topic对象

1

2

3

4

5

6

7

8

9

10

11

12

13

@Configuration

public class MqConfig {

 

    @Bean

    public Queue queue(){

        return new ActiveMQQueue("mvp.queue");

    }

    @Bean

    public Topic topic(){

        return new ActiveMQTopic("mvp.topic");

    }  

     

}

如果你还不知道@Configuration和@Bean注解的意思,你应该读读这篇博客spring @Configuration 和@Bean注解剖析

 

4:发送点对点消息

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@RestController

public class QueueController {

 

    @Autowired

    private Queue queue;

 

    @Autowired

    private JmsMessagingTemplate jmsMessagingTemplate;

 

    @RequestMapping("/send")

    public void send() {

        jmsMessagingTemplate.convertAndSend(queue, "一杀");

    }

 

}

5:监听点对点消息

1

2

3

4

5

6

7

8

9

@Component

public class QueueConsumer {

 

    @JmsListener(destination="mvp.queue"

   public void readMessage(String text){ 

      System.out.println("接收到消息:"+text); 

   }  

 

}

 

 

2018-04-23_164942.png

 

 

6:发送topic消息

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@RestController

public class TopicController {

 

    @Autowired

    private Topic topic;

 

    @Autowired

    private JmsMessagingTemplate jmsMessagingTemplate;

 

    @RequestMapping("/send1")

    public void send() {

        jmsMessagingTemplate.convertAndSend(topic, "topic-message");

    }

 

}

7:监听topic消息

1

2

3

4

5

6

7

8

9

@Component

public class TopicConsumer {

 

    @JmsListener(destination="mvp.topic"

   public void readMessage(String text){ 

      System.out.println("接收到消息:"+text); 

   }  

 

}

但是---------------------------------------------收不到消息,why?

because:不是没有发成功,而是springboot默认只能监听queue,而不能监听topic

为了能监听topic,你需要在application.properties文件中加如下配置

1

spring.jms.pub-sub-domain=true

但是---------------------------------------------queue又没法监听了

所以在一个springboot工程中要么监听queue要么监听topic,二者不可兼得啊

 

上面示例工程代码:https://pan.baidu.com/s/1N57V3E2QIRBOSuhh9OAkrQ

 

但是----------------------------------------------我就想在一个springboot工程既能监听queue和topic怎么办?

解决办法:放弃activemq的自动配置,自己来配。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值