消息發送者
1、創建普通的maven工程12-activemq-spring-sender作為 消息發送者
2、在pom.xml文件中添加相關依賴
!-- JMS規范的jar依賴 -->
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- activeMQ對jms具體實現的jar依賴 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.8</version>
</dependency>
<!--spring提供的對jms支持的依賴-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!--slf4j的簡單實現 可加可不加,解決輸出警告日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
注意:高版本的支持,還需要手動加幾個spring的依賴,所以我們就用4.3.13.RELEASE
3、創建spring配置文件applicationContext.xml,并導入JMS配置文件,加入掃描包
<context:component-scan base-package="com.bjpowernode.activemq.service"/>
<import resource="applicationContext-jms.xml"/>
4、創建在JMS配置文件applicationContext-jms.xml并配置
● 配置連接工廠ConnectionFactory
● 配置JMS消息模板JmsTemplate
!-- 配置一個連接工廠 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.235.128:61616"/>
</bean>
<!-- 配置JmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestinationName" value="springQueue" />
</bean>
5、在com.bjpowernode.activemq.service包下創建一個MessageService類,并提供發送消息的方法
@Service
public class MessageService {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(){
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("Hello,Spring ActiveMQ");
}
});
}
}
6、 在com.bjpowernode.activemq包下創建Test類,運行測試發送消息
public class Test {
public static void main(String[] args) {
//啟動spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//根據容器獲取bean對象
MessageService messageService = context.getBean("messageService", MessageService.class);
//調用bean對象的方法, 發送消息
messageService.sendMessage();
}
}
7、在ActiveMQ控制臺查看效果
1、 創建普通的maven工程12-activemq-spring-receiver作為 消息接收者
2、在pom.xml文件中添加相關依賴(可以從發送項目拷貝)
<!-- JMS規范的jar依賴 -->
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- activeMQ對jms具體實現的jar依賴 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.8</version>
</dependency>
<!--spring提供的對jms支持的依賴-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!--slf4j的簡單實現 可加可不加,解決輸出警告日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
注意:高版本的支持,還需要手動加幾個spring的依賴,所以我們就用4.3.13.RELEASE
3、創建spring配置文件applicationContext.xml,并導入JMS配置文件,加入掃描包(可以從發送項目拷貝)
<context:component-scan base-package="com.bjpowernode.activemq.service"/>
<import resource="applicationContext-jms.xml"/>
4、創建在JMS配置文件applicationContext-jms.xml并配置
● 配置連接工廠ConnectionFactory
● 配置JMS消息模板JmsTemplate
<!-- 配置一個連接工廠 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.235.128:61616"/>
</bean>
<!-- 配置JmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestinationName" value="springQueue" />
</bean>
5、在com.bjpowernode.activemq.service包下創建一個MessageService類,并提供接收消息的方法
@Service
public class MessageService {
@Autowired
private JmsTemplate jmsTemplate;
public void receiveMessage(){
Message message = jmsTemplate.receive();
if(message instanceof TextMessage){
try {
String text = ((TextMessage) message).getText();
System.out.println("接收到的消息為:" + text);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
6、在com.bjpowernode.activemq包下創建Test類,運行測試發送消息
public class Test {
public static void main(String[] args) {
//啟動spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//根據容器獲取bean對象
MessageService messageService = context.getBean("messageService", MessageService.class);
//調用bean對象的方法, 發送消息
messageService.receiveMessage();
}
}
7、在ActiveMQ控制臺查看效果