前言:这篇文章 之前 有写关于 redis 整合 数据库整合的文章 帮助新人们快速入门springboot 项目 这些整合都是本人亲测,亲自实现的,希望能够帮到大家,话不多说 上代码
1.jar包下载
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
</dependencies>
2.yml 配置
spring:
activemq:
broker-url : tcp://127.0.0.1:61616
user: admin
password: admin
jms:
pub-sub-domain: true
topicName: testTopic
queueName: testQueue
3.配置链接工厂
package online.example.development.config;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.example.demo.mqListen.MQListen;
@Configuration
public class ActiveMqConfig {
@Value("${spring.activemq.broker-url}")
private String brokerUrl;
@Value("${spring.activemq.user}")
private String userName;
@Value("${spring.activemq.password}")
private String password;
@Value("${topicName}")
private String topicName;
@Value("${queueName}")
private String queueName;
@Autowired
private MQListen mQListen;
@Bean(name="activeMQConnectionFactory")
public ActiveMQConnectionFactory getActiveMQFactiory() {
ActiveMQConnectionFactory active=new ActiveMQConnectionFactory();
active.setBrokerURL(brokerUrl);
active.setUserName(userName);
active.setPassword(password);
active.setSendTimeout(1000);
return active;
}
@Bean(name="messageConsumer")
public MessageConsumer getConsumer(@Qualifier("activeMQConnectionFactory") ActiveMQConnectionFactory active) throws JMSException {
Connection createConnection = active.createConnection();
createConnection.start();
Session session = createConnection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createTopic(topicName);
MessageConsumer consumer = session.createConsumer(destination);
mQListen.setSession(session);
consumer.setMessageListener(mQListen);
System.err.println("mq消费者准备玩不");
return consumer;
}
}
4.配置生产者
package com.example.demo.mqListen;
import java.util.Enumeration;
import javax.annotation.Resource;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("api")
public class Produce {
@Resource(name="activeMQConnectionFactory")
private ActiveMQConnectionFactory activeMQConnectionFactory;
@Value("${topicName}")
private String topicName;
@ResponseBody
@RequestMapping("rest")
public void sendMessage() {
try {
Connection createConnection = activeMQConnectionFactory.createConnection();
createConnection.start();
Session session = createConnection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination=session.createTopic(topicName);
MessageProducer producer=session.createProducer(destination);
ObjectMessage createMessage = session.createObjectMessage();
createMessage.setObject("1111");
producer.send(createMessage);
System.err.println("发送完毕");
session.commit();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
5.配置消费者
package com.example.demo.mqListen;
import java.io.Serializable;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
@Component
public class MQListen implements MessageListener{
private Session session;
@Override
public void onMessage(Message message) {
ObjectMessage objMsg = (ObjectMessage) message;
try {
Serializable object = objMsg.getObject();
System.err.println(object);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
}
6.最后看打印结果 和activeMq终端是否有消费者消费消息