springboot集成消息队列(不使用中间件)
在Spring Boot中,你可以使用JMS(Java Message Service)API来创建一个简单的消息队列。JMS是Java EE的一部分,Spring Boot对其有很好的支持。以下是一个使用Spring Boot和JMS实现的简单示例。
首先,在pom.xml
中添加Spring Boot JMS支持的依赖:
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Spring Boot Starter JMS -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- Spring Boot Starter Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
然后,在application.properties
或application.yml
中配置ActiveMQ(Spring Boot默认使用的是ActiveMQ,它是JMS的一个实现):
# application.properties
spring.activemq.in-memory=true
spring.activemq.user=admin
spring.activemq.password=admin
接下来,创建一个配置类,配置消息队列:
@Configuration
public class JmsConfig {
@Bean
public Queue queue() {
return new ActiveMQQueue("sample.queue");
}
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerQueue(ConnectionFactory connectionFactory) {
SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
}
}
最后,创建生产者和消费者:
@Component
public class MessageProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
public void sendMessage(String message) {
jmsMessagingTemplate.convertAndSend(queue, message);
}
}
@Component
public class MessageConsumer {
@JmsListener(destination = "sample.queue")
public void receiveMessage(String message) {
System.out.println("Received <" + message + ">");
}
}
在Spring Boot应用程序的主类或者任何配置类中启动Spring Boot应用,你就会看到内置的消息队列服务器被启动。通过MessageProducer
类,你可以发送消息到队列,而MessageConsumer
类将监听队列并接收消息。
这个例子使用了ActiveMQ作为JMS的实现,并且在同一个JVM进程中运行。如果你想要一个真正的消息队列而不是仅仅在JVM内部,你需要配置一个支持JMS的外部中间件,如Apache ActiveMQ、RabbitMQ等,并进行适当的配置。
评论已关闭