activeMQ集成springboot

broker

简介:broker可以内置在代码中,即启动项目的时候就可以自动开启消息队列。即实现嵌入式的组件。

官网地址

依赖的包

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.0</version>
</dependency>

测试开启代码

public class EmbedBroker {
    public static void main(String[] args) throws Exception {
        // 1.创建服务
        BrokerService broker = new BrokerService();

        // 2、配置连接地址 本地的端口号
        broker.addConnector("tcp://localhost:61616");

        // 3、启动
        broker.start();
        // 对于springboot项目可以把这个做成一个bean或者做成一个服务
    }
}

mq整合springboot

整合springboot的步骤:

  1. 加依赖。
  2. 看XXXXproperties和XXXXautoConfiguration
  3. 导入bean

先看properties类

在这里插入图片描述

我们可以得到配置文件都是以spring.activemq开头的

回想一下api时候我们配置类里面配置的参数这里都可以配置。

spring:
  activemq:
    broker-url: "tcp;//127.0.0.1:61616"

再看看autoconfiguration

@Configuration(proxyBeanMethods = false) // 不用代理
@AutoConfigureBefore(JmsAutoConfiguration.class) // 先加载jms的bean 这里也就说我们可以通过配置jms的服务从而修改activemq的属性
@AutoConfigureAfter({ JndiConnectionFactoryAutoConfiguration.class })// 在初始化以后调用连接工厂这个就和我们api测试的时候对应起来了 创建连接工厂----》创建session会话

// 要有下面的类才能生效
@ConditionalOnClass({ ConnectionFactory.class, ActiveMQConnectionFactory.class })
@ConditionalOnMissingBean(ConnectionFactory.class)
// 将activemq和jms的配置加进来
@EnableConfigurationProperties({ ActiveMQProperties.class, JmsProperties.class })

@Import({ ActiveMQXAConnectionFactoryConfiguration.class, ActiveMQConnectionFactoryConfiguration.class })
public class ActiveMQAutoConfiguration {

}

我们猫一眼JmsProperties的配置

@ConfigurationProperties(prefix = "spring.jms")
public class JmsProperties {

	// 是否开启订阅
	private boolean pubSubDomain = false;
	
	private String jndiName;
	// 缓存 下面有配置cache的属性 里面默认producers为true consumers为false
	private final Cache cache = new Cache();
	// 监听
	private final Listener listener = new Listener();
	// 模板 这里面可以看到是否持久化等等的配置
	private final Template template = new Template();
// 这里有AcknowledgeMode的枚举类就是api里面session的按个参数
//DeliveryMode 是枚举类型是我们持久化的枚举类

小结:springboot集成activemq没有什么新东西,只要知道activemq的对象配置不仅从activemq里面有 还有jms也可以配置。

queue队列

要使用activemq要首先写一个bean

// 注意导包,util java中的队列
// JMS 下的队列
import javax.jms.Queue;

@Configuration
@EnableJms // 声明对 JMS 注解支持
public class ActiveMQConfig {

    @Value("${myqueue}")
    private String myqueue;

    @Bean
    public Queue queue(){
        return new ActiveMQQueue(myqueue);
    }

}

编写发送指令

 public String jmsMessageTest(){

     jmsTemplate.convertAndSend(queue,"this is a message");
     return "ok";

 }

指令接收:

@JmsListener(destination = "ubw")
public void jmsMessageReceive(Message message) throws JMSException {
    TextMessage text = (TextMessage)message;
    System.out.println(text.getText());
}

在这里插入图片描述

topic主题

看了源码,topic需要先更改一些配置。

/**
	 * Whether the default destination type is topic.
	 		默认主题模型 这里是false 所以目前是queue
	 */
private boolean pubSubDomain = false;

所以这里我们要改成topic模型
jms:
    pub-sub-domain: true

其余代码基本不变

public String jmsMessageTopic(){
    jmsTemplate.convertAndSend(topic,"this is a message");
    return "ok";
}

@JmsListener(destination = "ubwTopic")
public void jmsMessageReceiveTopic(Message message) throws JMSException {
    TextMessage text = (TextMessage)message;
    System.out.println(text.getText());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值