以下是“详解Springboot整合ActiveMQ(Queue和Topic两种模式)”的完整攻略,包含两个示例说明。
简介
ActiveMQ是一个流行的开源消息队列系统,它支持多种消息传递模式,包括点对点(Queue)和发布/订阅(Topic)。在本教程中,我们将介绍如何使用Spring Boot整合ActiveMQ,并演示如何使用Queue和Topic两种模式发送和接收消息。
示例1:使用Queue模式发送和接收消息
以下是一个使用Queue模式发送和接收消息的示例:
1. 添加依赖
在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2. 配置ActiveMQ
在application.properties
文件中添加以下配置:
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
在这个示例中,我们指定了ActiveMQ服务器的URL、用户名和密码。
3. 创建消息发送者
创建一个名为MessageSender
的类,用于发送消息:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;
@Component
public class MessageSender {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(String message) {
jmsTemplate.convertAndSend("test.queue", message);
}
}
在这个示例中,我们使用JmsTemplate
类发送消息到名为test.queue
的队列。
4. 创建消息接收者
创建一个名为MessageReceiver
的类,用于接收消息:
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class MessageReceiver {
@JmsListener(destination = "test.queue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
在这个示例中,我们使用@JmsListener
注解监听名为test.queue
的队列,并在接收到消息时打印消息内容。
5. 发送和接收消息
在Application
类中添加以下代码:
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private MessageSender messageSender;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
messageSender.sendMessage("Hello, world!");
}
}
在这个示例中,我们在Application
类的run
方法中调用MessageSender
类的sendMessage
方法发送消息。
6. 运行应用程序
使用以下命令运行应用程序:
mvn spring-boot:run
现在,您可以在控制台中看到Received message: Hello, world!
的输出,表示已成功接收到消息。
示例2:使用Topic模式发送和接收消息
以下是一个使用Topic模式发送和接收消息的示例:
1. 创建消息发送者
创建一个名为TopicMessageSender
的类,用于发送消息:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;
@Component
public class TopicMessageSender {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(String message) {
jmsTemplate.convertAndSend("test.topic", message);
}
}
在这个示例中,我们使用JmsTemplate
类发送消息到名为test.topic
的主题。
2. 创建消息接收者
创建一个名为TopicMessageReceiver
的类,用于接收消息:
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class TopicMessageReceiver {
@JmsListener(destination = "test.topic", containerFactory = "topicListenerFactory")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
在这个示例中,我们使用@JmsListener
注解监听名为test.topic
的主题,并在接收到消息时打印消息内容。
3. 配置主题监听器
在Application
类中添加以下配置:
@SpringBootApplication
@EnableJms
public class Application {
@Bean
public JmsListenerContainerFactory<?> topicListenerFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
factory.setPubSubDomain(true);
return factory;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在这个示例中,我们使用@EnableJms
注解启用JMS支持,并创建一个名为topicListenerFactory
的Bean,用于配置主题监听器。
4. 发送和接收消息
在Application
类中添加以下代码:
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private TopicMessageSender topicMessageSender;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
topicMessageSender.sendMessage("Hello, world!");
}
}
在这个示例中,我们在Application
类的run
方法中调用TopicMessageSender
类的sendMessage
方法发送消息。
5. 运行应用程序
使用以下命令运行应用程序:
mvn spring-boot:run
现在,您可以在控制台中看到Received message: Hello, world!
的输出,表示已成功接收到消息。
总结
Spring Boot提供了方便的方式来整合ActiveMQ,并支持Queue和Topic两种消息传递模式。在本教程中,我们演示了如何使用Spring Boot发送和接收消息,并提供了两个示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Springboot整合ActiveMQ(Queue和Topic两种模式) - Python技术站