我的诉求是,建一个订阅通道,然后多个客户端监听,当某个客户端掉线后,再上线的时候可以收到它没有接收到的消息。
2、编写发送java,ActiveMQsender.java
package com.by.activeMQ;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class ActiveMQsender {
public static void main(String[] args) {
@SuppressWarnings("resource")
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"ApplicationContext/applicationContext-send.xml");
JmsTemplate jmsTemplate = (JmsTemplate) ctx.getBean("jmsTemplate");
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage msg = session.createTextMessage();
// 设置消息属性
msg.setStringProperty("mood", "happy");
// 设置消息内容
msg.setText("Hello World!");
return msg;
}
});
System.out.println("send end");
}
}
package com.by.activeMQ;
import javax.jms.JMSException;
import javax.jms.TextMessage;
import org.springframework.jms.JmsException;
public class ActiveMQreceiver {
public void receive(TextMessage message) throws JmsException, JMSException {
String info = "this is receiver, "
+ " mood is " + message.getStringProperty("mood") + ","
+ "say " + message.getText();
System.out.println(info);
}
}
package com.by.activeMQ;
import javax.jms.JMSException;
import javax.jms.TextMessage;
import org.springframework.jms.JmsException;
public class ActiveMQreceiver2 {
public void receive(TextMessage message) throws JmsException, JMSException {
String info = "this is receiver2,"
+ " mood is " + message.getStringProperty("mood") + ","
+ "say " + message.getText();
System.out.println(info);
}
}
package com.by.activeMQ;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class openReceive {
public static void main(String[] args) {
@SuppressWarnings({ "unused", "resource" })
ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext/applicationContext-receive.xml");
while(true) {
}
}
}
7、编写一个配置文件,jms.properties
#send
send.name=Topic_Mood
#receive
topic.name=Topic_Mood
topic.clientId=client_LiLei
topic2.name=Topic_Mood
topic2.clientId=client_HanMei
#url
brokerUrl=failover:(tcp://10.0.0.232:61616)?initialReconnectDelay=1000
8、pom里面添加activeMQ的依赖
org.apache.activemq
activemq-pool
5.11.1
org.apache.commons
commons-pool2
2.3
org.springframework
spring-jms
4.0.0.RELEASE
org.apache.activemq
activemq-all
5.11.1
2016-08-05 11:27:19 [ main:0 ] - [ INFO ] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@16011db4: startup date [Fri Aug 05 11:27:19 CST 2016]; root of context hierarchy
2016-08-05 11:27:19 [ main:31 ] - [ INFO ] Loading XML bean definitions from class path resource [ApplicationContext/applicationContext-send.xml]
2016-08-05 11:27:19 [ main:187 ] - [ INFO ] Loading properties file from class path resource [properties/jms.properties]
2016-08-05 11:27:19 [ main:392 ] - [ INFO ] Established shared JMS Connection: ActiveMQConnection {id=ID:MDG42V9PSU28IKA-60542-1470367639797-1:1,clientId=null,started=false}
2016-08-05 11:27:19 [ ActiveMQ Task-1:467 ] - [ INFO ] Successfully connected to tcp://10.0.0.232:61616
send end
2016-08-05 11:28:04 [ ActiveMQ Task-1:490 ] - [ INFO ] Successfully connected to tcp://10.0.0.232:61616
2016-08-05 11:28:04 [ main:498 ] - [ INFO ] Established shared JMS Connection: ActiveMQConnection {id=ID:MDG42V9PSU28IKA-60544-1470367684739-1:1,clientId=client_LiLei,started=false}
2016-08-05 11:28:04 [ ActiveMQ Task-1:504 ] - [ INFO ] Successfully connected to tcp://10.0.0.232:61616
2016-08-05 11:28:04 [ main:509 ] - [ INFO ] Established shared JMS Connection: ActiveMQConnection {id=ID:MDG42V9PSU28IKA-60544-1470367684739-3:1,clientId=client_HanMei,started=false}
this is receiver2, mood is happy,say Hello World!
this is receiver, mood is happy,say Hello World!
啦啦啦,不知道大家注意了没有,配置另一个接收者就是,把第一个接收者的配置复制,然后添加个2,再把接收类复制,添加个2,就搞定了。哈哈哈~这种方式也适用于mongodb啊这种配置。在一个工程里面操作两个mongodb数据库。
注:我将代码上传到了csdn。