`
longgangbai
  • 浏览: 7339042 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于ActiveMQ中怎么实现一对多发送消息讨论

阅读更多

   

         无论采用哪种JMS 组件,JMS 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布/订阅模型),分别称作:PTP Domain 和Pub/Sub Domain。
          PTP(使用Queue即队列目标)     消息从一个生产者传送至一个消费者。在此传送模型中,目标是一个队列。消息首先被传送至队列目标,然后根据队列传送策略,从该队列将消息传送至向此队列进行注册的某一个消费者,一次只传送一条消息。可以向队列目标发送消息的生产者的数量没有限制,但每条消息只能发送至、并由一个消费者成功使用。如果没有已经向队列目标注册的消费者,队列将保留它收到的消息,并在某个消费者向该队列进行注册时将消息传送给该消费者。
         Pub/Sub(使用Topic即主题目标)     消息从一个生产者传送至任意数量的消费者。在此传送模型中,目标是一个主题。消息首先被传送至主题目标,然后传送至所有已订阅此主题的活动消费者。可以向主题目标发送消息的生产者的数量没有限制,并且每个消息可以发送至任意数量的订阅消费者。主题目标也支持持久订阅的概念。持久订阅表示消费者已向主题目标进行注册,但在消息传送时此消费者可以处于非活动状态。当此消费者再次处于活动状态时,它将接收此信息。如果没有已经向主题目标注册的消费者,主题不保留其接收到的消息,除非有非活动消费者注册了持久订阅。
这两种消息传送模型使用表示不同编程域的 API 对象(其语义稍有不同)进行处理。 

         在ActiveMQ中针对消息的发送实现类似Queue的队列的一对多实现,保障在消息发送端发送消息,客户端中无论是否启动必须始终可以接收到发送端发送的数据的实现。

目前有两种思路:

1.将一对多的发送消息采用Queue的方式主要将一对多分解为多个点对点的Queue发送消息。

   优点: 简单,容易实现,既保证消息发送的可靠性又实现了相关的功能。

  缺点:不便于管理,但是比较占用宽带不利于在局域网或者广域网发送消息。

 

2.将一对多发送消息采用发布订阅模式(Topic)模式

     需要将启动的时候事先进行消费者注册了持久订阅实现相关的功能,重写部分功能实现。

 

针对第二种方案怎么实现?请知道大侠,指点迷津,多谢了!

 

 

  

1、消息文件越来越多,导致超出了存储空间

报错日志:Usage Manager Store is Full, 100% of 1073741824. Stopping producer (ID:db01-48754-1336034955132-0:5:1:1) to prevent flooding queue://queue.land.group. See http://activemq.apache.org/producer-flow-control.html for more info (blocking for: 1s) | org.apache.activemq.broker.region.Queue | ActiveMQ Transport: tcp:///172.24.99.41:44716

这是由于我们在配置文件中设置了storeUsage ,当存储的消息文件(log文件)超过了这值就会报这个异常,在官方网站看到说消息文件不删除是5.3版本的一个bug,在5.5版本的时候已经被解决了,但是我们使用的是5.5.1版本啊,然后在看存储下来的消息文件,文件名不是连续的,那么说明其中还是有被删除的,后来在评论中看到Jeff Genender说的这个可能是ActiveMQ的线程调度问题,只要不使用线程调度就可以了,在broker中设置属性schedulerSupport=”false” ,这样消息文件就会自动在cleanup阶段删除了。

官方网址:https://issues.apache.org/jira/browse/AMQ-2736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

 

分享到:
评论
2 楼 longgangbai 2011-10-23  
snowwindxf 写道
你好,请问你现在有没有解决这个问题呢?P2P默认的对应的是pull模式,而pub/sub对应的是push模式,但是目前我想用pub/sub来实现pull模式,请问有什么方案吗?

没有方案但是在hornetq中有类似的解决方案。
1 楼 snowwindxf 2011-10-23  
你好,请问你现在有没有解决这个问题呢?P2P默认的对应的是pull模式,而pub/sub对应的是push模式,但是目前我想用pub/sub来实现pull模式,请问有什么方案吗?

相关推荐

    ActiveMQ使用Ajax实现多人聊天室

    在本场景中,我们将讨论如何利用ActiveMQ和Ajax技术来实现一个多人聊天室的功能。 首先,了解ActiveMQ的基本概念。ActiveMQ作为消息代理,它接收、存储并转发消息给订阅者。生产者发送消息到ActiveMQ,而消费者则从...

    Apache ActiveMQ Artemis.pdf

    描述中提到消息队列在服务器编程中的重要性,以及ActiveMQ Artemis作为其中一种开源消息队列的选择。文档可以作为开发者下载学习的资源,以了解ActiveMQ Artemis的使用和管理。 ActiveMQ Artemis支持的标签"服务器...

    jms+activeMQ研究文档

    Pub/Sub模型则允许多个消费者订阅同一个主题,消息生产者向主题发送消息,所有订阅了该主题的消费者都将接收到消息。 ActiveMQ作为JMSProvider,实现了JMS规范,支持以上讨论的消息模型和概念,并提供了消息服务的...

    ActiveMQ实例应用

    在本文中,我们将深入探讨ActiveMQ在点对点(Point-to-Point)消息传递和发布-订阅(Publish-Subscribe)消息模式中的实际应用。 首先,让我们了解**点对点消息模式**。这种模式是基于队列(Queue)的,其中每个...

    ActiveMQ in Action

    《ActiveMQ in Action》这本书是关于消息中间件Apache ActiveMQ的实战指南,旨在帮助读者深入理解和熟练使用这一强大的开源消息代理。Apache ActiveMQ是Java消息服务(JMS)的实现,广泛应用于分布式系统中的异步...

    ActiveMQ-Topic订阅发布模式Demo

    本示例“ActiveMQ-Topic订阅发布模式Demo”主要关注的是发布/订阅模式,这是一种一对多的消息传递方式。在发布/订阅模式中,生产者(Publisher)发送消息到一个主题(Topic),而多个消费者(Subscriber)可以订阅这...

    activemq +jms(原生和集成spring-jms)

    在"activemq + jms(原生和集成spring-jms)"的主题中,我们将探讨如何使用ActiveMQ原生API以及结合Spring-JMS框架来实现消息队列的创建与使用,主要涵盖以下几个核心知识点: 1. **ActiveMQ的基本概念**:包括Broker...

    spring+activemq

    而ActiveMQ则是Apache软件基金会开发的一个开源消息代理,它实现了Java消息服务(JMS)规范,用于处理应用程序之间的异步通信。 标题“spring+activemq”暗示了我们将探讨如何将Spring框架与ActiveMQ集成,以便利用...

    activemq-cpp开发手册

    - **创建生产者类**:通过继承或使用现有类来实现消息生产者的逻辑。 - **初始化及销毁**:初始化生产者实例,并在不再使用时正确销毁。 - **生产并发送消息至队列**:利用生产者实例向队列发送消息。 - **发送...

    activemq 接收文件流 C#

    在IT行业中,Apache ActiveMQ是一个广泛使用的开源消息代理,它实现了多种消息协议,如AMQP、STOMP、MQTT和OpenWire等。本篇将详细探讨如何使用C#与ActiveMQ进行交互,尤其是如何接收文件流。我们将从基础概念、环境...

    ActiveMQ in action.pdf 英文版

    《ActiveMQ in Action》是一本深受读者欢迎的关于Apache ActiveMQ的权威指南,它深入浅出地介绍了如何在实际环境中运用这一开源消息中间件。ActiveMQ是Java消息服务(JMS)的一个实现,广泛用于分布式系统中的异步...

    ActiveMQ面试专题.docx

    ActiveMQ 是一个流行的开源消息代理,它遵循JMS(Java消息服务)标准,用于在分布式系统中传递消息。在面试中,对ActiveMQ的理解和掌握是评估候选人技能的关键部分。以下是一些关于ActiveMQ面试中可能涉及的重要知识...

    消息队列activemq学习笔记

    通过以上介绍,我们可以了解到ActiveMQ作为一款成熟且功能强大的消息中间件,在实际应用中的重要作用。无论是解决系统间耦合问题还是提高系统的性能和稳定性,ActiveMQ都是一个值得深入学习的技术。

    activemq中间件视频教程

    - **发布/订阅(Pub/Sub)**:介绍主题(Topic)的概念,实现一对多的消息广播,多个订阅者可以同时接收到消息。 5. **高级特性** - **事务支持**:讲解JMS事务,确保消息在成功处理后才被确认。 - **消息重试与...

    activeMQ in action 2011

    《ActiveMQ in Action 2011》是2011年出版的一本关于Apache ActiveMQ的权威指南,由行业专家撰写,旨在帮助读者深入理解并有效地使用这一强大的消息中间件。ActiveMQ是Apache软件基金会的一个开源项目,它提供了一个...

    ActiveMQ消息中间件面试专题.zip

    - **消息队列**:ActiveMQ中的消息队列是一种存储和转发消息的机制,保证了消息的顺序性和可靠性。 - **生产者与消费者**:生产者负责创建和发送消息,消费者则接收并处理这些消息。 - **主题(Topic)与队列...

    消息中间件ActiveMQ及Spring整合JMS.docx

    Spring提供了模板类(JmsTemplate)和监听容器(MessageListenerContainer)等工具,方便地与ActiveMQ交互,实现消息的发送和接收。在Spring配置文件中,可以定义ConnectionFactory和Destination,然后使用...

    boot activemq

    在IT行业中,Apache ActiveMQ是一个广泛使用的开源消息代理和队列服务器,它允许应用程序通过发布/订阅和点对点模式来交换消息。Spring Boot则是一个用于简化Spring应用初始搭建以及开发过程的框架,它能够自动配置...

    springboot集成消息队列实现发送与接收demo

    1. 消息模型:了解点对点(Queue)和发布/订阅(Topic)两种模型,它们分别适用于一对一通信和一对多广播场景。 2. 异步处理:消息队列能够将处理任务从主线程中分离,提高系统的响应速度和并发能力。 3. 消费确认:...

Global site tag (gtag.js) - Google Analytics