activemq接收消息(activeMQ能否实现消息推送)
本文目录
- activeMQ能否实现消息推送
- ActiveMQ怎么设置一次只读取队列中的一条消息
- 使用MQ消息中间件是否发送消息不成功怎么办
- ActiveMQ中消费者是怎么接收消息的
- ActiveMQ 无法相互收到消息
- activeMQ消息中文乱码解决(控制台乱码及后台接收乱码)
- activemq怎么看消息信息
- ActiveMQ 多个队列一个消费者 怎么接收信息
- 如何访问ActiveMQ接收消息
- 如何查看activemq 的消息接收记录
activeMQ能否实现消息推送
是可以实现消息推送的。目前市面上消息推送的系统有很多,在选择的时候一定要选择适合自己的学校推送系统。消息推送:就是将合适的信息推送给合适的人,是一项极具挑战的工作。这个过程需要对信息作充分的分析,并对人的兴趣、行为做细致的刻画,并对两者进行有效匹配。消息推送的原理:通过建立一条手机与服务器的连接链路,当有消息需要发送到手机时,通过此链路发送即可。选择消息推送系统,可以选择深圳极光家的消息推送系统。极光成立于2011年,是国内领先的移动开发者服务提供商,先后推出消息推送、一键认证、即时通讯、统计分析、流量变现(极光联盟)、极光VaaS、极光UMS等服务。助力各行业客户提高运营效率,实现量化决策。
ActiveMQ怎么设置一次只读取队列中的一条消息
必须确认消息才能将其从队列中“删除”。可以使用$stomp-》ack($messageID)。执行此操作如果不想明确确认收据,可以将$stomp-》subscribe ack的标题设置为auto。这将使服务器自动确认消息并假设它已正确传送。$stomp-》subscribe(’/queue/something’, array(’ack’ =》 ’auto’));
使用MQ消息中间件是否发送消息不成功怎么办
JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程。而activemq则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的服务提供者。
jms 的一个标准或者说是一个协议.通常用于企业级应用的消息传递. 主要有topic 消息(1 对多), queue 消息(1对1)。activemq 是一个jms 的实现, apache 出的.
另外还其它的实现 jboss 。
MQ简介:
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有 MQ。
MQ特点:
MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。
使用场景:
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
JMS简介:
JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
定义:
JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。
简介:
JMS是一种与厂商无关的 API,用来访问消息收发系统消息。它类似于JDBC(Java ):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、可序列化的对象 ()、属性集合 (MapMessage)、字节流 ()、原始值流 (),还有无有效负载的消息 (Message)。
JMS和MQ的关系:
JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程。而MQ则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的服务提供者;MQ的实现可以基于JMS,也可以基于其他规范或标准。
支持JMS的开源MQ:
目前选择的最多的是ActiveMQ。
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
主要特点:
1. 多种语言和协议编写客户端。语言: Java, C, C, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,XMPP,AMQP
2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
4. 通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
6. 支持通过JDBC和journal提供高速的消息持久化
7. 从设计上保证了高性能的集群,客户端-服务器,点对点
8. 支持Ajax
9. 支持与Axis的整合
10. 可以很容易得调用内嵌JMS provider,进行测试
11. ActiveMQ速度非常快;一般要比jbossMQ快10倍。
优点:是一个快速的开源消息组件(框架),支持集群,同等网络,自动检测,TCP,SSL,广播,持久化,XA,和J2EE1.4容器无缝结合,并且支持轻量级容器和大多数跨语言客户端上的Java虚拟机。消息异步接受,减少软件多系统集成的耦合度。消息可靠接收,确保消息在中间件可靠保存,多个消息也可以组成原子事务。
缺点:ActiveMQ默认的配置性能偏低,需要优化配置,但是配置文件复杂,ActiveMQ本身不提供管理工具;示例代码少;主页上的文档看上去比较全面,但是缺乏一种有效的组织方式,文档只有片段,用户很难由浅入深进行了解,二、文档整体的专业性太强。在研究阶段可以通过查maillist、看Javadoc、分析源代码来了解。
ActiveMQ中消费者是怎么接收消息的
在ActiveMQ中,消息生产者是无法知道消息消费者是否已经接受到消息的,因为消息发送和接收是两个相对独立的过程,生产者将消息发送给MOM,当MOM对接受消息进行了应答.
ActiveMQ 无法相互收到消息
经过的实际处理,在activemq 5.9.1中也发现这种问题。经发现是queue的策略没有配置导致的。在《destinationPolicy》 《policyMap》 《policyEntries》增加对Queue的策略管理如下:《!-- 属性enableAudit=false,是防止消息在回流后被当做重复消息而不被转发 --》 《policyEntry queue="》" producerFlowControl="false" memoryLimit="10mb" enableAudit="false"》 《!-- 属性replayWhenNoConsumers=true,保证在该节点断开,并重启后,且consumers已经连接到另外一个节点上的情况下,消息自动回流到原始节点 --》 《networkBridgeFilterFactory》 《conditionalNetworkBridgeFilterFactory replayWhenNoConsumers="true"/》 《/networkBridgeFilterFactory》 《/policyEntry》同时你需要通过配置broker相关的通信处理:《networkConnectors》 《networkConnector uri="static:failover://(tcp://IP:端口号,tcp://IP:端口号)" duplex="true" conduitSubscriptions="false"/》 《/networkConnectors》这样就不会有问题了。
activeMQ消息中文乱码解决(控制台乱码及后台接收乱码)
***隐藏网址*** 此时需要配置过滤器进行转码: 在MQ的服务器目录中找到webapps/admin/WEB-INF中修改web.xml文件 添加如下过滤器
activemq怎么看消息信息
我也是个菜鸟,说下我的理解:IBM MQ是有“发送队列”、“接收队列”的。ActiveMQ没有“发送队列”、“接收队列”,就是普通的建一个“队列”,然后发消息到这个队列,从这个队列接收消息。
ActiveMQ 多个队列一个消费者 怎么接收信息
一、WebSphere MQ命令行命令1、停止队列管理器 endmqm runmqsc mqm_name。通过命令runmqsc启动队列管理器的命令服务器。WebSphere MQ Explorer也能完成相同的任务。runmqsc的相关命令有三种运行方式,Verify a command without running it,Run a command on a local queue manager,Run a command on a remote queue manager。runmqsc的相关命令在解释的时候都会以大写来解释,比如DEFINE,ALTER,RESET等。但是这些命令并不是大小写敏感的。每行runmqsc命令最长只能到8个字符,可以通过-或者+连接下一行,-是从下一行的第一个字符开始,+是从下一行的第一个非空字符开始。而且所有命令与平台无关。runmqsc的标准输入是键盘,标准输出时屏幕,我们可以通过《,》重定向。例如从脚本输入命令runmqsc 《/path/filename.in,将结果重定向到文件runmqsc》/path/filename.out。 1、显示队列管理器属性(DISPLAY QMGR): DISPLAY QMGR显示当前队列管理器的所有属性,也可以使用DISPLAY QMGR 属性名,单独查看当前队列管理器的某个特定属性。 2、 更改队列管理器属性(ALTER QMGR ): ALTER QMGR 用于更改队列管理器的相关属性,例如 ALTER QMGR MAXHANDS(255),这个命令将默认队列管理器的MAXHANDS由256更改为255。 3、创建本地队列(DEFINE QLOCAL ): DEFINE QLOCAL Q_LOCAL_NAME,在创建队列的时候可以定义相关属性的值,如果没有定义则使用默认值。也可以全部使用默认值,最后通过ALTER QLOCAL命令来修改相关属性。在同一个队列管理器中不能有同名的队列,可以使用REPLACE关键字重建已有的队列。 4、修改本地队列属性(ALTER QLOCAL): ALTER QLOCAL Q_LOCAL_NAME NEW_ATTRIBUTE。已经定义了的本地队列可以使用ALTER QLOCAL 命令对其属性进行修改。 5、显示本地队列属性(DISPLAY QLOCAL): DISPLAY QLOCAL Q_LOCAL_NAME ATTRIBUTE。此命令用于显示本地队列的属性,可以使用默认的显示全部属性,也可以显示指定的属性。 6、复制本地队列(DEFINE QLOCAL NEW LIKE OLD): DEFINE QLOCAL NEW LIKE OLD。此命令可以创建一个属性与OLD完全一样的本地队列。当然,我们也可以在语句后面指定属性的详细信息,没有指定的则继承OLD的对应属性,指定了的则使用新的属性。 7、清除本地队列中的消息(CLEAR QLOCAL): CLEAR QLOCAL Q_LOCAL_QUEUE。此命令用于清除本地队列中存储的信息。在清除信息的时候系统不会给出任何提示,而是直接把信息删除。在一下两种情况下不能使用CLEAR QLOCAL,本地队列中存储的有在最近一次队列同步以后未提交的信息,有应用程序打开使用本地此队列。 8、删除本地队列(DELETE QLOCAL): DELETE QLOCAL Q_LOCAL_QUEUE。此命令用于删除本地队列,当本地队列中存在有没有提交的数据此队列不能删除。如果队列中存在数据,且数据是提交了的,可以使用PURGE关键字删除本地队列。例如DELETE QLOCAL (Q_LOCAL_QUEUE) PURGE,在删除的时候可以指定NOPURGE关键字代替PURGE以保护删除的队列中可能存在的已提交数据。三、PCF commands PCF commands允许管理员通过编程的方式将MQ的日常管理任务集成在程序中。包括创建队列,预定义队列,更改队列管理器等, PCF commands与MQSC锁实现的功能是相同。
如何访问ActiveMQ接收消息
作消息发送按照JMS规范保证靠性所消息都应该发送broker交由broker投递即说其实JMS建议或支持传输文件于比较文件简单处理式先读取所文件byte使用ByteMessage文件数据发送broker像message处理于文件例1GB文件搞直接client或broker给oom掉种式仅仅适用于文件传输特别broker端使用数据库作存储message序列化存放于blob字段文件传输频繁或稍微点写入效率极低直接传输文件解决传输文件问题ActiveMQjms规范外引入jms streams概念PTP模式连同destination两端通broker转传输文件发送端使用connection.createOutputStream打输流往流写文件OutputStream out =connection.createOutputStream(destination);接收端则简单使用connection.createInputStream拿输入流读取文件数据即InputStream in = connection.createInputStream(destination)
如何查看activemq 的消息接收记录
之前写了一个ActiveMQ发送消息的例子。现在记录一下java接收ActiveMQ消息的代码。都是本人工作中写过的。希望给大家一点帮助。代码如下: Java代码 package com.syxp.dns.receive; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.log4j.Logger; publicclass ReceiveMessageFromMQ { privatestatic String url = "tcp://localhost:61616"; privatestatic String user = ""; privatestatic String password = ""; privatestatic Logger logger = Logger.getLogger(ReceiveMessageFromMQ.class); publicvoid receiveMessage(){ // 创建连接工厂 ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url); // 创建连接 Connection connection; try { connection = connectionFactory.createConnection(); connection.start(); // 创建Session Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建目标,就创建主题也可以创建队列 Destination destination = session.createQueue("integratedalarm.subject"); // 创建消息消费者***隐藏网址*** // 接收消息,参数:接收消息的超时时间,为0的话则不超时,receive返回下一个消息,但是超时了或者消费者被关闭,返回null Message message = consumer.receive(1000); if (message instanceof TextMessage) { TextMessage textMessage = (TextMessage) message; String text = textMessage.getText(); logger.info("接收的消息:"+"\n"+text); } else { logger.info("接收的消息:"+"\n"+message); } consumer.close(); session.close(); connection.close(); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } } publicstaticvoid main(String args) { ReceiveMessageFromMQ receiveMessageFromMQ = new ReceiveMessageFromMQ(); receiveMessageFromMQ.receiveMessage(); } } 上面有详细的注释,运行了上面的接收的方法之后,会打印出一条相应队列的未接收消息。在ActiveMQ的监视控制页面中,可以看到有一条消息已经被消费。
更多文章:
系统资源不足无法完成请求(系统资源不足,无法完成请求的服务)
2024年7月24日 06:34
think of什么意思(Think 和think of 的区别)
2024年7月11日 06:44
android重启app(求助:为什么Android应用异常后会自动重启)
2024年8月28日 19:35
submitted翻译(文章“待投”或“准备投稿”用英语怎么翻译)
2024年7月24日 15:34
c语言读取txt文件(怎么用c语言实现读取一个.txt文件里的数据并要按行读出来)
2024年8月27日 23:25
bufferedreader采用了哪种设计模式(java按行读word文件,)
2024年7月22日 05:33
javascript数组sort方法(在javascript中怎么使用sort方法进行换行)
2024年8月7日 08:10
array什么意思中文翻译(c语言中的array 是什么意思哦)
2024年7月3日 01:51
affect和effect的区别(effect和affect有什么区别)
2024年8月12日 11:30
巴氏刷牙法电动牙刷(在使用电动牙刷的时候,真的能够保护牙齿吗)
2023年10月12日 14:00
ignorance读音(单词难记,发音不准,书面表达差听不懂(英语单词))
2024年6月17日 03:08
createthread(MFC CreateThread 显示对话框)
2024年7月24日 03:25