Active MQ 入门 2,Spring Boot 整合 Active MQ
1、搭建 Spring Boot 项目
首先创建一个 Spring Boot 的项目,在 pom 文件中加入:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
加入 Spring Boot 对 Active MQ 支持的 starter 包:starter-activemq
还有 Active MQ 的连接池:activemq-pool
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
2、配置相关信息
在 application.properties 加入 Active MQ 的相关配置信息
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.pool.enabled=true
3、编写配置类
Spring Boot 规定必须配置 Active MQ 的连接工厂,和 Spring 的配置方法一样,只不过这是注解与 Java 代码的方式进行配置
@Configuration
@EnableJms
public class ActiveMqConfiguration {
@Value("${spring.activemq.user}")
private String usrName;
@Value("${spring.activemq.password}")
private String password;
@Value("${spring.activemq.broker-url}")
private String brokerUrl;
@Bean
public ConnectionFactory connectionFactory(){
ActiveMQConnectionFactory connectionFactory
= new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(brokerUrl);
connectionFactory.setUserName(usrName);
connectionFactory.setPassword(password);
return connectionFactory;
}
@Bean("jmsTopicListenerContainerFactory")
public JmsListenerContainerFactory jmsTopicListenerContainerFactory(
ConnectionFactory connectionFactory
){
DefaultJmsListenerContainerFactory factory
= new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(true);
return factory;
}
}
4、发送端代码(生产者)
@Service
public class ProducerQueue {
@Autowired
private JmsMessagingTemplate jmsTemplate;//简单操作
@Autowired
private JmsTemplate template;//可以做更细微的控制
// 发送消息,destination是发送到的队列,message是待发送的消息
public void sendMessageByJmsMessagingTemplate(Destination destination, final String message){
jmsTemplate.convertAndSend(destination, message);
}
public void sendMessageByJmsTemplate(Destination destination, final String message){
template.send(destination, session -> {
TextMessage msg = session.createTextMessage();
msg.setText(message + "othre information");
return msg;
});
}
}
5、接收端代码(消费者)
@Component
public class ConsumerAQueue {
// 使用JmsListener配置消费者监听的队列,其中text是接收到的消息
@JmsListener(destination = "springboot.queue")
public void receiveQueue(String text){
System.out.println(this.getClass().getName()+" receive msg:"+text);
}
}
6、编写测试类
首先我们启动 Spring Boot 程序。
然后我们在 test 目录下编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class AmSpringbootApplicationTests {
@Autowired
private ProducerQueue producerQueue;
@Test
public void testQueueNormal() {
Destination destination
= new ActiveMQQueue("springboot.queue");
for(int i=0; i<3; i++){
producerQueue.sendMessageByJmsMessagingTemplate(destination,
"NO:"+i+";my name is Mark!!!");
}
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于