/**
* 包装连接和消息列表的内部类
*
*/
private class GroupChat{
private TopicSession session = null;
private List<GroupMessage> messages = new ArrayList<GroupMessage>();
public TopicSession getSession() {
return session;
}
public void setSession(TopicSession session) {
this.session = session;
}
public List<GroupMessage> getMessages() {
return messages;
}
}
import java.io.Serializable;
import java.util.Date;
群消息类
public class GroupMessage implements Serializable {
private static final long serialVersionUID = 8933293907620444570L;
double id = 0.0;
int groupId = 0;
int userId = 0;
String userName = "";
String body = "";
Date sendDate = null;
public GroupMessage(){
id = Math.random();
}
public double getId() {
return id;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public Date getSendDate() {
return sendDate;
}
public void setSendDate(Date sendDate) {
this.sendDate = sendDate;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
}
群聊发送消息 跟点对点模式差不多
大致代码如下
TopicConnection topicConnection = connectionFactory.createTopicConnection();
TopicSession session = topicConnection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(String.valueOf(gid));
TopicPublisher publisher = session.createPublisher(topic);
publisher.setDeliveryMode(DeliveryMode.PERSISTENT);
publisher.setTimeToLive(3*24*60*60*1000);
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setObject(message);
publisher.publish(objectMessage);
topicConnection.close();
群聊接收消息 跟点对点模式差不多
大致代码如下
TopicSession topicSession = topicConnection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
Topic topic = topicSession.createTopic(String.valueOf(gid));
TopicSubscriber topicSubscriber = topicSession.createDurableSubscriber(topic, String.valueOf(uid)+"-"+String.valueOf(gid));
topicSubscriber.setMessageListener(new MessageListener() {
public void onMessage(javax.jms.Message message) {
logger.info("接收到消息类型:"+message.getClass());
if(message instanceof ObjectMessage){
if(messageMap.containsKey(gid)){
try {
ObjectMessage objectMessage = (ObjectMessage)message;
GroupMessage groupMessage = (GroupMessage) objectMessage.getObject();
logger.info(groupMessage.getBody());
messageMap.get(gid).getMessages().add(groupMessage);
objectMessage.acknowledge();
} catch (JMSException e) {
logger.error(e.getMessage(), e);
}
}
}
}
});
GroupChat groupChat = new GroupChat();
groupChat.setSession(topicSession);
messageMap.put(gid, groupChat);
分享到:
相关推荐
标签:activemq-jms-pool-5.9.0.jar,activemq,jms,pool,5.9.0,jar包下载,依赖包
标签:activemq-jms-pool-5.9.1.jar,activemq,jms,pool,5.9.1,jar包下载,依赖包
标签:activemq-jms-pool-5.9.1-javadoc.jar,activemq,jms,pool,5.9.1,javadoc,jar包下载,依赖包
标签:activemq-jms-pool-5.10.0-javadoc.jar,activemq,jms,pool,5.10.0,javadoc,jar包下载,依赖包
标签:activemq-jms-pool-5.10.0.jar,activemq,jms,pool,5.10.0,jar包下载,依赖包
ApacheCamel-JMS-ActiveMQ Apache Camel JMS ActiveMQ 使用样例 1.从本地读取信息推送到MQ中 2.从MQ中读取信息保存到本地
activemq-jms-pool-5.14.4.jar
activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载
apache-activemq-5.2.0.zip 开发jms时的一种开源消息总线
标签:activemq-jms-pool-5.10.0-sources.jar,activemq,jms,pool,5.10.0,sources,jar包下载,依赖包
activemq-pool-5.8.0-sources.jar
标签:activemq-jms-pool-5.9.1-sources.jar,activemq,jms,pool,5.9.1,sources,jar包下载,依赖包
标签:activemq-jms-pool-5.9.0-sources.jar,activemq,jms,pool,5.9.0,sources,jar包下载,依赖包
标签:activemq-jms-pool-5.9.0-javadoc.jar,activemq,jms,pool,5.9.0,javadoc,jar包下载,依赖包
spring整合JMS-居于ActiveMQ实现
标签:activemq-kahadb-store-5.9.1.jar,activemq,kahadb,store,5.9.1,jar包下载,依赖包
activemq-cpp-library-3.9.5编译的C++库文件,支持vs2015,vs2017,包括了依赖的库文件和头文件,可以在项目中直接使用。
ActiveMQ-JMS-教程ActiveMQ是用Java编写的开源消息代理,同时具有完整的Java Message Service JMS客户端。 它提供企业功能,在这种情况下,这意味着促进来自多个客户端或服务器的通信。 受支持的客户端包括通过JMS ...
ActiveMQ测试用例依赖的jar包,activemq-all-5.15.2.jar 和 jms-1.1.jar
spring-boot-rest-jms-activemq:REST,JMS,ActiveMQ,Spring Boot:gradle包含构建,gradle多项目构建,gradle propdeps-plugin,gradle节点插件,gradle docker-compose插件,spring-boot,sprinb-mvc ,spring ...