`
gtgt1988
  • 浏览: 114270 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JMS--activeMQ--广播模式

 
阅读更多

/**
	 * 包装连接和消息列表的内部类
	 * 
	 */
	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);
 
分享到:
评论

相关推荐

    apache-activemq-5.2.0.zip_activeMq 5.2.0_apache mq

    ActiveMQ作为JMS的实现,支持多种消息模式,包括点对点(Queue)和发布/订阅(Topic)。 点对点模式下,每个消息只有一个消费者,适合一对一的通信场景;而在发布/订阅模式中,一个消息可以被多个消费者接收,适用...

    jms-test.zip_jms activemq_jms test

    描述中提到,“jms测试程序,将tomcat和activeMq整合在一起做的一个发送接受的发布订阅的例子”,这表明项目是基于Tomcat服务器,并且通过ActiveMQ实现了一个发布/订阅模式的消息传递。Tomcat是一个流行的Java应用...

    activemq-master.zip_activemq

    4. 事务支持:ActiveMQ支持JMS事务,保证消息的可靠投递和原子性操作。 5. 多种协议支持:除了Java API,ActiveMQ还支持AMQP、STOMP、XMPP等多种网络协议,方便跨平台和语言的集成。 三、源码剖析 1. 代码结构:...

    ActiveMQ 中javax.jms的源码 javax.jms-sources-1.1.zip

    本篇文章将围绕"ActiveMQ 中javax.jms的源码 javax.jms-sources-1.1.zip"展开,详细剖析其关键概念、设计模式以及源码实现。 首先,javax.jms是一个Java API,它提供了一组与消息传递平台无关的接口,使得开发者...

    jms之activeMQ 队列和广播模式例子(主要给初学者提供入门知识)

    这篇博客"jms之activeMQ 队列和广播模式例子"主要面向初学者,旨在提供ActiveMQ入门级的知识,通过实例解释队列(Queue)和主题(Topic)这两种基本的消息模式。 首先,我们要理解JMS中的队列和主题的区别。队列...

    JMS-ActiveMQ入门实例

    **ActiveMQ** 是Apache软件基金会开发的一款开源消息代理,它实现了JMS规范,提供了多种协议的支持,如AMQP、STOMP、MQTT等。ActiveMQ因其高效、稳定和易用的特点,被广泛应用在企业级的消息传递系统中。 本入门...

    apache-activemq-5.11.2 附全解教程

    2. **消息模式**:ActiveMQ支持多种消息模式,如点对点(Queue)、发布/订阅(Topic)、请求/响应(Request/Reply)等,以满足不同应用场景的需求。 3. **高级路由和过滤**:ActiveMQ提供了多种消息路由策略,如...

    apache-activemq-5.9.0 下载

    Topic适用于广播模式,而Queue则遵循FIFO(先进先出)原则。 3. **JMS支持**:ActiveMQ完全符合JMS 1.1规范,支持Message Queue、Topic、Temporary Queue和Temporary Topic四种类型。用户可以通过JMS API创建连接、...

    ActiveMQ整合SpringBoot笔记及代码

    ActiveMQ是Apache软件基金会开发的一款开源的消息中间件,它支持多种消息协议,如AMQP、JMS等,广泛应用于Java开发环境中。SpringBoot以其简洁的配置和快速的应用开发能力,成为Java开发者首选的微服务框架。本篇...

    activemq安装包-apache-activemq-5.14.4-bin.tar.gz

    Apache ActiveMQ是业界广泛使用的开源消息中间件,它遵循Java Message Service (JMS) 规范,提供高效、可靠的异步消息传递服务。这个压缩包"apache-activemq-5.14.4-bin.tar.gz"包含了安装和运行ActiveMQ所需的所有...

    apache-activemq-5.15.3-bin

    Apache ActiveMQ是世界上最流行的开源消息代理和队列服务器,它基于Java Message Service(JMS)规范,用于在分布式系统中实现可靠的消息传递。这个压缩包"apache-activemq-5.15.3-bin"包含了ActiveMQ的可执行版本,...

    springboot2整合activemq的demo内含queue消息和topic消息

    - Apache ActiveMQ 是一个开源的消息中间件,遵循JMS(Java消息服务)规范,提供消息传递服务,支持多种协议,如AMQP、STOMP等。 - 它允许分布式系统中的组件异步通信,通过解耦生产者和消费者,提高系统的响应...

    jms-test.zip

    1. 创建JMS连接工厂:这是连接JMS提供者的桥梁,如ActiveMQ、RabbitMQ等。 2. 创建连接:通过连接工厂建立到JMS提供者的连接。 3. 创建会话:会话是执行JMS操作的上下文,可以设置事务管理、是否接收确认等属性。 4....

    apache-activemq-5.12.0-bin

    Apache ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它基于Java Message Service (JMS) 规范,提供高效、可靠的消息传递服务。在“apache-activemq-5.12.0-bin”这个压缩包中,包含了运行Apache ActiveMQ...

    apache-activemq-5.11.1-bin 官方windows版本

    - Topic是广播模式,消息会被所有订阅者接收,适合一对多通信。 7. **ActiveMQ的安全性** - 可以配置用户和角色,限制对资源的访问。 - 使用SSL/TLS加密网络通信,确保数据传输安全。 8. **监控和日志** - ...

    apache-activemq-5.11.1-bin.zip

    - **发布/订阅模式(Topic)**:支持一对多的消息广播,多个消费者可以订阅同一个主题。 - **持久化**:ActiveMQ可以将消息持久化到磁盘,即使服务器重启也能恢复未处理的消息。 - **事务支持**:允许在消息发送和...

    apache-activemq-5.3.0-bin.zip

    - **队列与主题**:ActiveMQ支持两种消息模式——点对点(Queue)和发布/订阅(Topic)。队列保证消息的顺序传递,而主题则允许广播式的消息分发。 2. **ActiveMQ功能**: - **高可用性**:通过集群和复制策略,...

    apache-activemq-5.15.2-bin.zip

    7. **消息类型**:ActiveMQ支持多种消息类型,包括点对点(Queue)和发布/订阅(Topic)模式。Queue用于一对一通信,而Topic用于一对多广播式通信。 8. **高可用性和集群**:ActiveMQ支持集群和故障转移,可以创建...

    apache-activemq-5.15.9-bin.zip

    1. **JMS支持**:ActiveMQ完全遵循JMS 1.1规范,提供了多种消息模式,如点对点、发布/订阅,以及事务和持久化机制。 2. **多协议支持**:ActiveMQ不仅支持OpenWire,还支持STOMP、AMQP、MQTT、WS和HTTP等多种消息...

Global site tag (gtag.js) - Google Analytics