ActiveMQ 是一个开源的消息中间件,广泛用于消息传递和企业应用集成。它由 Apache 软件基金会维护,主要用于实现 Java Message Service (JMS) 标准,并支持多种消息传递协议。
1.首先下载安装包
文章置顶安装包
2.解压之后加入系统变量中,修改path变量
记得点确定
3.启动ActiveMQ
这个中间件每次运行前要启动,在cmd中输入命令
actviemq start
显示以下结果代表运行成功
4.打开控制管理页面
输入local host:8161进入管理页面,用户名和密码默认都是admin
之后点击Manage ActiveMQ broker进入到管理页面
之后可以点击上方的Queue查看此时的消息队列,比如我当前就有13条消息未出队,往右依次是
消费者的数量,已经出队的消息数量
5.编写配置类
首先连接工厂是一定要配置的,下面的两个是生产者和消费者的配置,适用于不同的环境,同时可以设置是点对点还是订阅模式,记得交给spring托管
@Configuration
//在 Spring 应用程序中启用 JMS(Java Message Service)相关的功能和配置
public class JmsActiveMQConfig {
@Value("${broker.url}")
private String brokerUrl;
// 配置连接工厂
@Bean
public ConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(brokerUrl);// ActiveMQ 代理地址
return connectionFactory;
}
// 配置 JmsTemplate jms模板:消息发送 消息接收 消息转换 连接和会话管理
@Bean
public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(connectionFactory);
// jmsTemplate.setPubSubDomain(true); // 默认为 点对点(Queue)模式 设置为true表示发布/订阅(Topic)模式
return jmsTemplate;
}
// 配置消息监听器容器工厂
// @Bean
// public JmsListenerContainerFactory<?> jmsListenerContainerFactory(ConnectionFactory connectionFactory) {
// DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
// factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(true); // 默认为点对点(Queue)模式 设置为true表示发布/订阅(Topic)模式
// return factory;
// }
}
6.编写生产者类
这里的queueName是消息发送到ActiveMQ之后的队列的名称,可以放在配置文件中获取,
MessgeBean是自定义的数据类,可以任意配置,这里把消息转化未json格式进行发送,在其他层调用这个方法即可发送到中间件中
@Component
public class JmsMessageProducer {
@Value("${queueName}")
private String queueName;
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(MessageBean message) {
Gson gson=new Gson();
String json=gson.toJson(message);
jmsTemplate.convertAndSend(queueName, json);
System.out.println("发送的信息为"+json);
}
}
6.创建接收者类
使用一个@JmsListener注解,里面的destination是要监听的队列名字,对应前面的queueName
@Component
public class JmsMessageListener {
@JmsListener(destination = "bankMessages")
public void receive(String message) {
System.out.println("接收到消息:" + message);
}
}
7.测试
创建一个测试类只要启动IOC容器就可以自动监听,并且程序不会停止,会不断监听是否有新的消息
public class App {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
}
}