mq

阅读 / 问答 / 标签

公路技术状况指数MQI值保留几位小数

保留两位小数吧。公路技术状况指数MQI(Maintenance Quality Indicatior)是《公路技术状况评定标准》(JTG H20-2007)规定的,衡量判断公路技术状况的主要指标。辅以其分项指标,可对公路技术状况进行更为精确技术划分和路况判断。MQI的分项指标包括PQI、SCI、BCI、TCI,路面部分的分项指标还包括PCI、RQI、SRI、PSSI,共4大项5小项,各项指标的值域均为0~100。MQI= wPO PQI +wsCSCI +WeCIBCI+wrCI TCIWPQI 路面使用性能PQI,权重70%;WscI 路基技术状况SCI,权重8%;WBCI 桥隧构造物技术状况BCI,权重12%;WTCI 沿线设施技术状况TCI,权重10%。

MQI是( )。

【答案】:DMQI(MaintenanceQualityIndicator)指公路技术状况指数,PQI(PavementQualityorPerformanceIndex)指路面使用性能指数,PCI(PavementSurfaceConditionIndex)指路面损坏状况指数,RQI(RidingQualityIndex)指路面行驶质量指数。

高速公路技术状况指数( mqi)是什么意思?

MQI:即公路技术状况指数(Highway Maintenance Quality Indicator),用于综合评价公路路基、路面、桥隧构造物和沿线设施技术状况的指标。公路技术状况指数MQI是《公路技术状况评定标准》(JTG 5210—2018)第2.0.1条规定的。MQI作为衡量判断公路技术状况的主要指标,辅以其分项指标,可对公路技术状况进行更为精确技术划分和路况判断。扩展资料:公路技术状况指数MQI和相应分项指标(路面使用性能指数PQI、路基技术状况指数SCI、桥隧构造物技术状况指数BCI、沿线设施技术状况指数TCI)将公路技术状况分为优、良、中、次、差五个等级。MQI及各级分项指标:≥90,属优;≥80但<90,属良;≥70但<80,属中;≥60但<70,属次;<60,属差。公路网公路技术状况评定时,应采用公路网内所有路线MQI的长度加权平均值作为该公路网的MQI。参考资料来源:湖北省交通运输厅黄黄高速公路管理处-黄黄管理处十三五规划报告参考资料来源:百度百科-高速公路

公路技术状况指数( MQI)是什么意思?

公路技术状况指数,MQI(Maintenance Quality Indicatior)是《公路技术状况评定标准》(JTG H20-2007)规定的,衡量判断公路技术状况的主要指标。辅以其分项指标,可对公路技术状况进行更为精确技术划分和路况判断。MQI的分项指标包括PQI、SCI、BCI、TCI,路面。扩展资料高速公路相关指标:湖北省高速公路养护代履行的实施意见 (试行)第七条出现下列情形之一的,由省高速公路管理局责令高速公路经营管理者限期整改,拒不整改的,由省高速公路管理局指定其他有资质的单位实施养护代履行:(一)未按规定频率落实定期检查的桥梁和隧道;(二)以单车道1公里为单位,技术状况指数(MQI)在90以下的路段;(三)以单车道1公里为单位,路面使用性能指数(PQI)在90以下的路段;(四)以单车道1公里为单位,路面行驶质量指数(RQI)在90以下的路段;(五)以单车道1公里为单位,路面损坏状况指数(PCI)在90以下的路段;(六)以单车道1公里为单位,路面车辙深度指数(RDI)在80以下的路段;(七)以单车道1公里为单位,路面抗滑性能指数(SRI)在80以下的路段;参考资料来源:湖北省交通运输厅黄黄高速公路管理处-黄黄管理处十三五规划报告参考资料来源:百度百科-湖北省高速公路养护代履行的实施意见 (试行)

mqi是大于pqi好 还是小于pqi好

公路技术状况指数MQI(Maintenance Quality Indicatior)是《公路技术状况评定标准》(JTG H20-2007)规定的,衡量判断公路技术状况的主要指标。辅以其分项指标,可对公路技术状况进行更为精确技术划分和路况判断。MQI的分项指标包括PQI、SCI、BCI、TCI,路面部分的分项指标还包括PCI、RQI、SRI、PSSI,共4大项5小项,各项指标的值域均为0~100。

“Flashget://W0ZMQVNIR0VU”是什么意思?

快车用下载连接

IMQQ和腾讯QQ有什么区别

  IMQQ InstantMessaging(即时通讯,实时传讯)的缩写是IM,这是一种可以让使用者在网络上建立某种私人聊天室(chatroom)的实时通讯服务。大部分的即时通讯服务提供了状态信息的特性──显示联络人名单,联络人是否在线及能否与联络人交谈。   腾讯QQ QQ是深圳市腾讯计算机系统有限公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能。并可与移动通讯终端等多种通讯方式相连。

手机 qq音乐下载歌曲有mqms2字符请问什么意思

只是个来源的编码

已知∠AOB=60°,M为∠AOB内一点,请分别在OA,OB上找出点P,Q,使△PMQ的周长最短,求∠PMQ度数

∵MM`⊥OA,MM``⊥OB ∴∠AOB+∠M`MM``=180°∵∠AOB=60°∴∠M`MM``=120°∴∠M`MP+∠PMQ+∠M``MQ=120°∵ ∠MPQ+∠PMQ+∠MQP=180° ∠MPQ=2∠M`MP,∠MQP=2∠M``MQ∴∠PMQ=60°

已知正方形ABCD,ECGF,FMQH.点E在CD上。EF=4. 求△AGQ的面积

每个面积分开计算然后每个相减

如何察看mq中queue的消息内容?

Prepare:假设queue的名字叫做local.queue, queue manager的名字叫做 test.queue.manager,mq安装在/opt/mqm下。1.先确定queue的长度不是0.$runmqsc test.queue.managerdis ql("local.queue") curdepth2 : dis ql("local.queue") curdepthAMQ8409: Display Queue details.QUEUE(local.queue) CURDEPTH(1)如上所示,queue里面是有一个message的,因为curdepth的长度为1。2.查看queue的message的内容第一种方式:使用/opt/mqm/samp/bin/amqsget第二种方式:使用/opt/mqm/samp/bin/amqsbcg共同点:都是在命令后面先跟queue的名字,然后再跟queue manager的名字,如下/opt/mqm/samp/bin/amqsget local.queue test.queue.manager区别是:前者只能查看短长度的message,并且会把message取出(还不是太确定后者);遇到长度稍微长一点的就会发出2080的error code.$/opt/mqm/samp/bin/amqsget local.queue test.queue.managerSample AMQSGET0 startMQGET ended with reason code 2080Sample AMQSGET0 end而后者则没有这个限制;但是amqsbcg显示的message很奇特,连二进制的都同时显示。

如何察看mq中queue的消息内容

工作中的一些体会:如何查看queue里的messages的content.说实在的,MQ的东西很烦琐,虽然很强大。可是中文的资料太少(当然中文版的MQ会带些帮助文档,不过都是垃圾);英文的太拗口(虽然我整天看英文的文档,还是看不太懂;要不就是MQ太庞大了?)反正我只是在工作中学了那么一点点可怜的东西,就赶快写出来了。据我所知,是有两种的方式来查看queue的content.Prepare:假设queue的名字叫做local.queue, queue manager的名字叫做 test.queue.manager,mq安装在/opt/mqm下.1.先确定queue的长度不是0.$runmqsc test.queue.managerdis ql("local.queue") curdepth 2 : dis ql("local.queue") curdepthAMQ8409: Display Queue details. QUEUE(local.queue) CURDEPTH(1)如上所示,queue里面是有一个message的,因为curdepth的长度为1.2.查看queue的message的内容第一种方式:使用/opt/mqm/samp/bin/amqsget第二种方式:使用/opt/mqm/samp/bin/amqsbcg共同点:都是在命令后面先跟queue的名字,然后再跟queue manager的名字,如下/opt/mqm/samp/bin/amqsget local.queue test.queue.manager区别是:前者只能查看短长度的message,并且会把message取出(还不是太确定后者);遇到长度稍微长一点的就会发出2080的error code.$/opt/mqm/samp/bin/amqsget local.queue test.queue.managerSample AMQSGET0 startMQGET ended with reason code 2080Sample AMQSGET0 end而后者则没有这个限制;但是amqsbcg显示的message很奇特,连二进制的都同时显示

MQ里面 partition是什么意思?

partition是代表分区的意思,如C盘、D盘等分区

2012雷人剪辑 1分14秒 http://www.tudou.com/programs/view/3y1yMqDYzqg/ 哪个黑人唱的歌叫什么

Pop Danthology 2012-Mashup of 55 Pop Songs你找的是Chris Brown - Turn Up The Music00:01 Maroon 5 feat. Wiz Khalifa - Payphone00:02The Wanted - Glad You Came00:04Flo Rida - Whistle00:19Christina Aguilera - Your Body00:21 (CHORUS:Gym Class Heroes feat. Neon Hitch - Ass Back Home)00:24 Usher - Scream00:35 Ellie Goulding - Lights00:39Jennifer Lopez feat. Pitbull - Dance Again00:41Chris Brown - Don"t Wake Me Up00:46LMFAO - Sorry For Party Rocking00:50Fun. - Some Nights00:56Kelly Clarkson - Stronger01:05 Far East Movement feat. Justin Bieber - Live My Life01:11Jessie J-Domino01:13Chris Brown - Turn Up The Music01:28Calvin Harris feat. Ne-Yo - Let"s Go01:32Maroon 5 - One More Night01:43Carly Rae Jepson - Call Me Maybe01:51P!nk - Blow Me (One Last Kiss)"01:59Flo Rida feat. Sia - Wild Ones02:03Rita Ora - "How We Do (Party)02:29 Adele-Set Fire To The Rain02:43 Katy Perry-Part Of Me03:00 Ne-Yo - Let Me Love You03:02 Demi Lovato - Give Your Heart a Break03:33 Fun-We Are Young (VERSE, PRECHORUS: We Are Young VSKarmin - Brokenhearted)03:43Katy Perry-Wild Wake03:48 Nelly Furtado - Big Hoops04:01 Justin Bieber-Boyfriend04:04 Cher Lloyd - Want U Back04:11 (CHORUS:Tyga - Rack City)04:22Owl City/Carly Rae Jepsen-Good Time04:29 Nicki Minaj-Starships04:36 PSY-GangnamStyle04:37 Alex Clare-Too Close04:40 Usher-Climax04:42 Justin Bieber-As Long As You Love Me04:51 Ke$ha-Die Young04:54 One Direction-What Makes You Beautiful05:07Rihanna-Diamonds05:13 Nicki Minaj-Pound The Alarm05:15 Rihanna-Where Have You Been05:43 Adele-Skyfall05:47 David Guetta feat. Sia - Titanium06:15 One Direction--Live While We Are Young06:25 will.i.am/Eva Simons-This is love06:27 Chris Brown/Pitbull-International love06:30 David Guetta - I Can Only Imagine06:37Swedish House Mafia - Don"t You Worry Child06:40 Gotye feat. Kimbra - Somebody That I Used To Know06:45Enrique Iglesias feat. Sammy Adams - Finally Found You07:00 Zedd feat. Matthew Koma - Spectrum07:15Madonna feat. M.I.A. & Nicky Minaj - Give Me All Your Luvin07:30Owl City/Carly Rae Jepsen-Good Time

前段和后端怎么用rabbitmq实现消息通信 Python?

一、通过Python模拟收发消息1、在各个节点上安装epel源# yum install epel* -y112、安装python库# yum --enablerepo=epel -y install python2-pika113、在rabbitmq-server节点上1)、创建用户# rabbitmqctl add_user wuyeliang password 112)、创建虚拟主机# rabbitmqctl add_vhost /my_vhost113)、赋予权限# rabbitmqctl set_permissions -p /my_vhost wuyeliang ".*" ".*" ".*" 114、在rabbitmq节点上模拟发消息,代码如下# vi send_msg.py#!/usr/bin/env pythonimport pikacredentials = pika.PlainCredentials("wuyeliang", "password") #注意用户名及密码connection = pika.BlockingConnection(pika.ConnectionParameters("localhost",5672,"/my_vhost",credentials))channel = connection.channel()channel.queue_declare(queue="Hello_World")channel.basic_publish(exchange="",routing_key="Hello_World",body="Hello RabbitMQ World!")print(" [x] Sent "Hello_World"")connection.close()12345678910111213141516123456789101112131415164、在client节点上模拟收消息,代码如下# vi receive_msg.py#!/usr/bin/env pythonimport signalimport pikasignal.signal(signal.SIGPIPE, signal.SIG_DFL)signal.signal(signal.SIGINT, signal.SIG_DFL)credentials = pika.PlainCredentials("wuyeliang", "password")connection = pika.BlockingConnection(pika.ConnectionParameters("dlp.srv.world",5672,"/my_vhost",credentials))channel = connection.channel()channel.queue_declare(queue="Hello_World")def callback(ch, method, properties, body):print(" [x] Received %r" % body)channel.basic_consume(callback,queue="Hello_World",no_ack=True)print(" [*] Waiting for messages. To exit press CTRL+C")channel.start_consuming()123456789101112131415161718192021123456789101112131415161718192021

电脑 eyimq is missing 什么意思?

这个eyimq is missing的意思就是:eyimq文件丢失正常的操作系统应该显示为:BOOTMGR is missing(引导文件丢失)NTLDR is missing(NT系统引导文件丢失)

mqtt的keepalive设置为10秒什么意思

MQTT是一项消息传递技术,由IBM再2001年发布。  总结一下,机制就是使用一个代理服务器messagebroker,  客户端client连接上这个服务器,然后告诉服务器说,我可以接收哪些类型的消息,  同时,client也可以发布自己的消息,这些消息根据协议的内容,可以被其他client获取。  只要手机客户端,连上服务器,然后就可以接收和发布消息了,不用自己写socket什么了,  低带宽,低耗电量,代码量也少,很简单吧。  package com.pig.test.mqtt;  import com.ibm.mqtt.MqttClient; 回答不容易,希望能帮到您,满意请帮忙采纳一下,谢谢 !

如何正确的应用MQC的QOS划分业务等级(牵扯信任边界是否需要划分)

你这个仅仅是给数据打了标记,而标记是否生效需要看下一跳路由器是否信任你,标记并能直接影响到数据包,而是在排队等流控机制生效时会产生做用,因此建议你在本路由器就设置好队列带宽控制的策略。

什么是MQC?

MQC:模块化QoS命令行接口,在Cisco IOS 12.0 (5) T 版本中被引用   组成:1.类别映射   2.策略映射   3.服务策略1.在华硕,MQC是material quality control的简称,在notebook manufacturing这一行,对于来料和供应商的管控都依靠这个部门。下面包括供应商品质管理部门(SQE),来料检验部门(IQC)和量测实验室(3D lab and RoHS lab)。2.MQC的工作其实很难作,一切关于原物料的品质问题都要涉及到MQC,一切关于供应商的引进和承认也要倚赖MQC,一切供应商品质的提升都是MQC每天的话题。他是供应商与工厂的第一道窗口。

高速公路中MQI是什么意思

公路技术状况指数MQI(Maintenance Quality Indicatior)是《公路技术状况评定标准》(JTG H20-2007)规定的,衡量判断公路技术状况的主要指标。辅以其分项指标,可对公路技术状况进行更为精确技术划分和路况判断。MQI的分项指标包括PQI、SCI、BCI、TCI,路面部分的分项指标还包括PCI、RQI、SRI、PSSI,共4大项5小项,各项指标的值域均为0~100。

rabbitmq 什么是node

rabbitmq编辑MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ。使使用场景在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。

XMQ是什么意思?

XMQ是不同领域中可能具有多种含义的缩写。其中,最为常见的含义是指西门子医疗有限公司(Siemens Medical Equipment Ltd.)旗下的一个影像诊断工具平台,全称为X-ray Multi-modality Quantitative Imaging Biomarker(升级版为Quantitative Clinical Imaging Solution,QCIS)。该平台是西门子医疗公司推出的一款面向医学影像领域的高端诊断分析工具,可通过医学影像分析提供定量分析与诊断支持。除此之外,XMQ也可能代表其他不同的机构、组织或术语,需要根据具体背景进行解释和理解。

java使用mq get api从mq中取数据怎样触发侦听器连续取数据

{ //前面是准备管理器和队列 MQQueueManager qMgr = new MQQueueManager(qManager); int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT | MQConstants.MQOO_INQUIRE; MQQueue queue = qMgr.accessQueue(qName, openOptions); MQMessage rcvMessage = new MQMessage(); MQGetMessageOptions gmo = new MQGetMessageOptions(); gmo.options = gmo.options + MQConstants.MQGMO_WAIT + MQConstants.MQGMO_SYNCPOINT; //读取五秒超时,这里目的是要有个读取阻塞,和Socket编程类似。 gmo.waitInterval = 5000; queue.get(rcvMessage, gmo); //后面就是操作消息的部分【略】 }catch(Exception e){{ //前面是准备管理器和队列 MQQueueManager qMgr = new MQQueueManager(qManager); int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT | MQConstants.MQOO_INQUIRE; MQQueue queue = qMgr.accessQueue(qName, openOptions); MQMessage rcvMessage = new MQMessage(); MQGetMessageOptions gmo = new MQGetMessageOptions(); gmo.options = gmo.options + MQConstants.MQGMO_WAIT + MQConstants.MQGMO_SYNCPOINT; //读取五秒超时,这里目的是要有个读取阻塞,和Socket编程类似。 gmo.waitInterval = 5000; queue.get(rcvMessage, gmo); //后面就是操作消息的部分【略】 }catch(Exception e){

python怎么实现rabbitmq的confirm模式

一、通过Python模拟收发消息1、在各个节点上安装epel源# yum install epel* -y112、安装python库# yum --enablerepo=epel -y install python2-pika113、在rabbitmq-server节点上 1)、创建用户# rabbitmqctl add_user wuyeliang password 112)、创建虚拟主机# rabbitmqctl add_vhost /my_vhost113)、赋予权限# rabbitmqctl set_permissions -p /my_vhost wuyeliang ".*" ".*" ".*" 114、在rabbitmq节点上模拟发消息,代码如下# vi send_msg.py#!/usr/bin/env pythonimport pikacredentials = pika.PlainCredentials("wuyeliang", "password") #注意用户名及密码connection = pika.BlockingConnection(pika.ConnectionParameters("localhost",5672,"/my_vhost",credentials))channel = connection.channel()channel.queue_declare(queue="Hello_World")channel.basic_publish(exchange="",routing_key="Hello_World",body="Hello RabbitMQ World!")print(" [x] Sent "Hello_World"")connection.close()12345678910111213141516123456789101112131415164、在client节点上模拟收消息,代码如下# vi receive_msg.py#!/usr/bin/env pythonimport signalimport pikasignal.signal(signal.SIGPIPE, signal.SIG_DFL)signal.signal(signal.SIGINT, signal.SIG_DFL)credentials = pika.PlainCredentials("wuyeliang", "password")connection = pika.BlockingConnection(pika.ConnectionParameters("dlp.srv.world",5672,"/my_vhost",credentials))channel = connection.channel()channel.queue_declare(queue="Hello_World")def callback(ch, method, properties, body):print(" [x] Received %r" % body)channel.basic_consume(callback,queue="Hello_World",no_ack=True)print(" [*] Waiting for messages. To exit press CTRL+C")channel.start_consuming()123456789101112131415161718192021123456789101112131415161718192021

一道几何题: O为圆心,M为EF中点, AB、CD与EF交于P点,Q点,MF=ME。求证:MP=MQ 题图如下。拜托了

求教老师呗 未必老师做不到啊 说不定还可以被老师表扬的 哈哈!! ●﹏● vzz

ActiveMQ 安装windwos服务不能启动有关问题怎么解决

ActiveMQ 安装windwos服务不能启动问题一.AcitveMQ windwos 服务1.安装目录下新建 temp文件夹2.安装目录下inwin32wrapper.conf指定java.io.tempdir目录wrapper.java.additional.10=-Djava.io.tmpdir="%ACTIVEMQ_HOME%/temp"# ------------------------------------# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright ownership.# The ASF licenses this file to You under the Apache License, Version 2.0# (the "License"); you may not use this file except in compliance with# the License. You may obtain a copy of the License at# # http://www.apache.org/licenses/LICENSE-2.0# # Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.# ------------------------------------#********************************************************************# Wrapper Properties#********************************************************************#wrapper.debug=TRUEset.default.ACTIVEMQ_HOME=../..set.default.ACTIVEMQ_BASE=../..wrapper.working.dir=.# Java Applicationwrapper.java.command=java# Java Main class. This class must implement the WrapperListener interface# or guarantee that the WrapperManager class is initialized. Helper# classes are provided to do this for you. See the Integration section# of the documentation for details.wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp# Java Classpath (include wrapper.jar) Add class path elements as# needed starting from 1wrapper.java.classpath.1=%ACTIVEMQ_HOME%/bin/wrapper.jarwrapper.java.classpath.2=%ACTIVEMQ_HOME%/bin/run.jar# Java Library Path (location of Wrapper.DLL or libwrapper.so)wrapper.java.library.path.1=%ACTIVEMQ_HOME%/bin/win32# Java Additional Parameters# note that n is the parameter number starting from 1.wrapper.java.additional.1=-Dactivemq.home="%ACTIVEMQ_HOME%"wrapper.java.additional.2=-Dactivemq.base="%ACTIVEMQ_BASE%"wrapper.java.additional.3=-Djavax.net.ssl.keyStorePassword=passwordwrapper.java.additional.4=-Djavax.net.ssl.trustStorePassword=passwordwrapper.java.additional.5=-Djavax.net.ssl.keyStore="%ACTIVEMQ_BASE%/conf/broker.ks"wrapper.java.additional.6=-Djavax.net.ssl.trustStore="%ACTIVEMQ_BASE%/conf/broker.ts"wrapper.java.additional.7=-Dcom.sun.management.jmxremotewrapper.java.additional.8=-Dorg.apache.activemq.UseDedicatedTaskRunner=truewrapper.java.additional.9=-Djava.util.logging.config.file=logging.propertieswrapper.java.additional.10=-Djava.io.tmpdir="%ACTIVEMQ_HOME%/temp"# Uncomment to enable remote jmx#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616 #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false# Uncomment to enable YourKit profiling#wrapper.java.additional.n=-Xrunyjpagent# Uncomment to enable remote debugging#wrapper.java.additional.n=-Xdebug -Xnoagent -Djava.compiler=NONE #wrapper.java.additional.n=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005# Initial Java Heap Size (in MB)#wrapper.java.initmemory=3# Maximum Java Heap Size (in MB)wrapper.java.maxmemory=512# Application parameters. Add parameters as needed starting from 1wrapper.app.parameter.1=org.apache.activemq.console.Mainwrapper.app.parameter.2=start#********************************************************************# Wrapper Logging Properties#********************************************************************# Format of output for the console. (See docs for formats)wrapper.console.format=PM# Log Level for console output. (See docs for log levels)wrapper.console.loglevel=INFO# Log file to use for wrapper output logging.wrapper.logfile=%ACTIVEMQ_BASE%/data/wrapper.log# Format of output for the log file. (See docs for formats)wrapper.logfile.format=LPTM# Log Level for log file output. (See docs for log levels)wrapper.logfile.loglevel=INFO# Maximum size that the log file will be allowed to grow to before# the log is rolled. Size is specified in bytes. The default value# of 0, disables log rolling. May abbreviate with the "k" (kb) or# "m" (mb) suffix. For example: 10m = 10 megabytes.wrapper.logfile.maxsize=0# Maximum number of rolled log files which will be allowed before old# files are deleted. The default value of 0 implies no limit.wrapper.logfile.maxfiles=0# Log Level for sys/event log output. (See docs for log levels)wrapper.syslog.loglevel=NONE#********************************************************************# Wrapper Windows Properties#********************************************************************# Title to use when running as a consolewrapper.console.title=ActiveMQ#********************************************************************# Wrapper Windows NT/2000/XP Service Properties#********************************************************************# WARNING - Do not modify any of these properties when an application# using this configuration file has been installed as a service.# Please uninstall the service before modifying this section. The# service can then be reinstalled.# Name of the servicewrapper.ntservice.name=ActiveMQ# Display name of the servicewrapper.ntservice.displayname=ActiveMQ# Description of the servicewrapper.ntservice.description=ActiveMQ Broker# Service dependencies. Add dependencies as needed starting from 1wrapper.ntservice.dependency.1=# Mode in which the service is installed. AUTO_START or DEMAND_STARTwrapper.ntservice.starttype=AUTO_START# Allow the service to interact with the desktop.wrapper.ntservice.interactive=false4.出现如下错误 Unable to execute Java command. 系统找不到指定的文件。 (0x2)5.指定Java安装路径wrapper.java.command=C:/Program Files/Java/jdk1.7.0_25/bin/java# ------------------------------------# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright ownership.# The ASF licenses this file to You under the Apache License, Version 2.0# (the "License"); you may not use this file except in compliance with# the License. You may obtain a copy of the License at# # http://www.apache.org/licenses/LICENSE-2.0# # Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.# ------------------------------------#********************************************************************# Wrapper Properties#********************************************************************# wrapper.debug=TRUEset.default.ACTIVEMQ_HOME=../..set.default.ACTIVEMQ_BASE=../..wrapper.working.dir=.# Java Applicationwrapper.java.command=C:/Program Files/Java/jdk1.7.0_25/bin/java# Java Main class. This class must implement the WrapperListener interface# or guarantee that the WrapperManager class is initialized. Helper# classes are provided to do this for you. See the Integration section# of the documentation for details.wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp# Java Classpath (include wrapper.jar) Add class path elements as# needed starting from 1wrapper.java.classpath.1=%ACTIVEMQ_HOME%/bin/wrapper.jarwrapper.java.classpath.2=%ACTIVEMQ_HOME%/bin/run.jar# Java Library Path (location of Wrapper.DLL or libwrapper.so)wrapper.java.library.path.1=%ACTIVEMQ_HOME%/bin/win32# Java Additional Parameters# note that n is the parameter number starting from 1.wrapper.java.additional.1=-Dactivemq.home="%ACTIVEMQ_HOME%"wrapper.java.additional.2=-Dactivemq.base="%ACTIVEMQ_BASE%"wrapper.java.additional.3=-Djavax.net.ssl.keyStorePassword=passwordwrapper.java.additional.4=-Djavax.net.ssl.trustStorePassword=passwordwrapper.java.additional.5=-Djavax.net.ssl.keyStore="%ACTIVEMQ_BASE%/conf/broker.ks"wrapper.java.additional.6=-Djavax.net.ssl.trustStore="%ACTIVEMQ_BASE%/conf/broker.ts"wrapper.java.additional.7=-Dcom.sun.management.jmxremotewrapper.java.additional.8=-Dorg.apache.activemq.UseDedicatedTaskRunner=truewrapper.java.additional.9=-Djava.util.logging.config.file=logging.propertieswrapper.java.additional.10=-Djava.io.tmpdir="%ACTIVEMQ_HOME%/temp"# Uncomment to enable remote jmx#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616 #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false# Uncomment to enable YourKit profiling#wrapper.java.additional.n=-Xrunyjpagent# Uncomment to enable remote debugging#wrapper.java.additional.n=-Xdebug -Xnoagent -Djava.compiler=NONE #wrapper.java.additional.n=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005# Initial Java Heap Size (in MB)#wrapper.java.initmemory=3# Maximum Java Heap Size (in MB)

未来人类(Terrans Force) X811 17.3英寸游戏本(i7-4710MQ 8G 128G固态+1TB GTX870M 6G独显)黑

可以的,不过你要那么高的内存作甚?

怎么用angular js实现mqtt协议

使用开发工具打开目录打开index.html,在<body>的最下面添加angular.js的引用<script src="node_modules/angular/angular.js"></script>打开app.js将window对象换成angular对象,代码结构如下:(function (angular) { "use strict";})(angular);创建一个模块:var myApp = angular.module("MyTodoMvc", []);创建一个Controller myApp.controller("MainController", ["$scope", function ($scope) { };暴露text到页面$scope.text = "";暴露todos到页面 $scope.todos = [ { id: 1, text: "学习", completed: false }, { id: 2, text: "睡觉", completed: false }, { id: 3, text: "敲代码", completed: true } ];

Where isUrumqi的汉语?

他的汉语的形式有很多种的,你找一下

(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi什么意思

fdgg

urumqi 发音

[u"rumtu0283i] 乌鲁木齐 和汉语发音相似

urumqi在地球的那个方向

是乌鲁木齐 新疆维吾尔自治区

urumqi 乌鲁木齐的英语发音 要写出音标的

傻冒,查无此词。cctv9主播的读法是:wurumuqi

澳门英语拼写为什么是Urumqi而不是汉语拼音

乌鲁木齐

为什么乌鲁木齐的英文不是汉语拼音? 英文:Urumqi

其实,也是汉语拼音,不过只是老外听了我们的汉语拼音后自己写的,然后又出现在某些公共传媒上,就普及到大多数人了,到我们自己用的时候也就不在另起一个以免造成麻烦.就把他当成一个英语单词来记,用了.

为什么澳门的英文拼写是Urumqi而不是AoMen

因为澳门曾经被老外强奸了。不是老处啊,每个中国人都知道的

urumqi在中国的什么方

是在中国的西北方,因为urumqi就是乌鲁木齐,属于新疆维吾尔自治区的首府。

Urumqi指的是哪里?

乌鲁木齐

urumqi也就是"乌鲁木齐"这个名字是怎么由来的?代表的是什么意思?

乌鲁木齐,古准噶尔蒙古语,意为“优美的牧场”。远在新石器时代人类就在这里生息繁衍。战国时,属古车师人活动范围,当时乌鲁木齐南郊已居住着较多的人群。西汉时期,乌鲁木齐及其周围地区居住着较多的人群。西汉时期,乌鲁木齐及其周围地区居住着十几个部落的游牧民,史称“十三国之地”。到了东汉,乌鲁木齐成为车师六国的一部分。贞观22年(公元648年),唐政府在距今乌鲁木齐以南10公里处设置轮台城,是当时丝绸之路新北道上唯一的收税城、管理城和供给城,也是乌鲁木齐第一城。唐代边塞诗人岑参曾在此留下“忽如一夜春风来,千树万树梨花开”的著名诗句。十八世纪中叶,城市雏形开始形成。清乾隆二十八年(1763年),乾隆皇帝将扩展后的城池命名为“迪化”。光绪十年(1884年),新疆设置行省,以迪化为省会,遂取代伊犁成为臂控天山南北的政治中心。新中国成立后,迪化成为自治区首府,并于1954年2月1日恢复乌鲁木齐市名。

IQ 、EQ、AQ、MQ都是什么意思

IQ是智商吧,其他的忽然想不起来了。

AQ,MQ又是什么意思?

iq(intelligencequotient),智慧商数,是指一个人所具有的智慧多少和对科学知识的理解掌握程度。eq(emotionalquotient),情绪商数,是指一个人对环境和个人情绪的掌控和对团队关系的运作能力。aq(adversityquotient),一般被译为挫折商或逆境商,(逆境商数)是我们在面对逆境时的处理能力。明确地描绘出一个人的挫折忍受力。mq(moralintelligencequotient),德商,是指一个人的德性水平或道德人格品质。德商的内容包括体贴、尊重、容忍、宽恕、诚实、负责、平和、忠心、礼貌、幽默等各种美德。

如何将rackot mq消费失败的消息保存起来,然后支持重放

RocketMQ有自动应对消费失败的保存和重试机制,并不需要人工操作。如果Consumer端因为各种类型异常导致本次消费失败,为防止该消息丢失而需要将其重新回发给Broker端保存,保存这种因为异常无法正常消费而回发给MQ的消息队列称之为重试队列。RocketMQ会为每个消费组都设置一个Topic名称为“%RETRY%+consumerGroup”的重试队列(这里需要注意的是,这个Topic的重试队列是针对消费组,而不是针对每个Topic设置的),用于暂时保存因为各种异常而导致Consumer端无法消费的消息。考虑到异常恢复起来需要一些时间,会为重试队列设置多个重试级别,每个重试级别都有与之对应的重新投递延时,重试次数越多投递延时就越大。RocketMQ对于重试消息的处理是先保存至Topic名称为“SCHEDULE_TOPIC_XXXX”的延迟队列中,后台定时任务按照对应的时间进行Delay后重新保存至“%RETRY%+consumerGroup”的重试队列中。Consumer端会一直订阅该重试队列主题的消息,向Broker端发送如下的拉取消息的PullRequest请求,以尝试重新再次消费重试队列中积压的消息。

IQ.EQ.SQ.MQ分别是什麼意思?

IQ就是智商(Intelligence quotient) 智商就是指智力商数,是一种平均值,这一平均值反映某人在所有不同测验中的一般表现的大致情况。 EQ(Emotional Quotient)是"情绪商数"的英文简称,它代表的是一个人的情绪智力(Emotional Intelligence)之能力。简单的来说,EQ是一个人自我情绪管理以及管理他人情绪的能力指数。 AQ即是Adversity Quotient逆境处理智商数也,经常听说IQ或者EQ,其实AQ才是最重要的,它决定你是否在逆境中可以冲破压力,战胜困难,逢凶化吉,否则就算智商.情商在高也会随着意志力的衰弱而没有施展的余地

C8QNG7C2G5MQ我想知道这个序号苹果手机是什么时候出现的?求各位大神指点

自己上网查吧,很简单,百度搜索——果粉查询,进入网站输入手机序列号即可查询手机信息,如果购机时间与手机激活时间一致,手机就是正品新机

苹果序列号F17NRTQNG5MQ是国行正品吗?

[F17NRTQNG5MQ]信息:设备名称:iPhone 6产品类型:iPhone颜色:金色容量:16GB有效购买日期:是激活状态:已激活激活时间:2015-01-10电话支持:已过期硬件保修:已过期产地:中国(郑州)出厂日期:2014-11-25/2014-12-01

DNPN89QNG5MQ请问我这手机是翻新机吗

[DNPN89QNG5MQ]信息:设备名称:iPhone 6产品类型:iPhone颜色:金色容量:16GB有效购买日期:是激活状态:已激活激活时间:2014-10-04电话支持:已过期硬件保修:已过期剩余保修:0天产地:中国(成都)出厂日期:2014-08-19/2014-08-252014年的机子 新买就是二手翻新机

RocketMQ和Kafka到底选哪个

1、适用场景 kafka适合日志处理 rocketmq适合业务处理 结论:两者没有区别,根据具体业务定夺 2、性能 kafka单机写入TPS号称在百万条/秒 rocketmq大约在10万条/秒 结论:追求性能方面,kafka单机性能更高 3、可靠性 kafka使用异步刷盘方式,异步Replication rocketmq支持异步/同步刷盘,异步/同步Replication 结论:rocketmq所支持的同步方式提升了数据的可靠性 4、实时性 kafka和rocketmq均支持pull长轮询,rocketmq消息实时性更高 结论:rocketmq胜出 5、支持的队列数 kafka单机超过64个队列/分区,消息发送性能降低严重 rocketmq单机支持最高5W个队列,性能稳定 结论:长远看,rocketmq胜出, 6、消息顺序性 kafka某些配置下,支持消息顺序,但是一台Broker宕机后,就会产生消息乱序 rocketmq支持严格的消息顺序,一台Broker宕机后,发送消息会失败,但是不会乱序 结论:rocketmq胜出 7、消息失败重试机制 kafka消费失败不支持重试 rocketmq消费失败支持定时重试,每次重试间隔时间顺延 8、定时/延时消息 kafka不支持定时消息 rocketmq支持定时消息 9、分布式事务消息 kafka不支持分布式事务消息 rocketmq未来会支持 10、消息查询机制 kafka不支持消息查询 rocketmq支持根据message id查询消息,也支持根据消息内容查询消息 11、消息回溯 kafka可以按照offset回溯消息 rocketmq支持按照时间回溯消息,例如从一天之前的某时某分开始重新消费消息 问题一:push和pull模式 push模式:客户端与服务端建立连接后,当服务端有消息时,将消息推送到客户端 pull模式:客户端不断的轮询请求服务端,来获取新的消息 在具体实现时,push和pull模式都是采用消费端主动拉取的方式,即consumer轮询从broker拉取消息 区别: push 方式中,consumer把轮询过程封装了,并注册了MessageListener监听器,取到消息后,唤醒MessageListener的consumerMessage来消费,用户而言,觉得消息被推送过来的 pull方式中,取消息的过程需要用户自己写,首先通过打算消费的Topic拿到MessageQueue的集合,遍历MessageQueue集合,然后针对每个MessageQueue批量获取消息,一次取完之后,记录该队列下一次要取的开始offset,直到取完了,再换另一个MessageQueue 疑问:既然都是采用pull方式实现,rocketmq怎么保证消息的实时性? 长轮询:rocketmq时采用长轮询的方式实现的,指的是在请求的过程中,若是服务器端数据并没有更新,那么则将这个连接挂起,直到服务器推送新的数据,再返回,然后进入循环周期 客户端像传统轮询一样从服务端请求数据,服务端会阻塞请求不会立刻返回,直到有数据或者超时才返回给客户端,然后关闭连接,客户端处理完响应信息后再向服务器发送新的请求

RocketMQ的消息重试

对于顺序消息,当消费者消费消息失败后,消息队列 RocketMQ 会自动不断进行消息重试(每次间隔时间为 1 秒),这时,应用会出现消息消费被阻塞的情况。因此,在使用顺序消息时,务必保证应用能够及时监控并处理消费失败的情况,避免阻塞现象的发生。 对于无序消息(普通、定时、延时、事务消息),当消费者消费消息失败时,您可以通过设置返回状态达到消息重试的结果。 无序消息的重试只针对集群消费方式生效;广播方式不提供失败重试特性,即消费失败后,失败消息不再重试,继续消费新的消息。 消息队列 RocketMQ 默认允许每条消息最多重试 16 次,每次重试的间隔时间如下: 如果消息重试 16 次后仍然失败,消息将不再投递。如果严格按照上述重试时间间隔计算,某条消息在一直消费失败的前提下,将会在接下来的 4 小时 46 分钟之内进行 16 次重试,超过这个时间范围消息将不再重试投递。 注意: 一条消息无论重试多少次,这些重试消息的 Message ID 不会改变。 2)配置方式 消费失败后,重试配置方式集群消费方式下,消息消费失败后期望消息重试,需要在消息监听器接口的实现中明确进行配置 (三种方式任选一种): 返回 ConsumeConcurrentlyStatus.RECONSUME_LATER; (推荐) 返回 Null 抛出异常 消费失败后,不重试配置方式 集群消费方式下,消息失败后期望消息不重试,需要捕获消费逻辑中可能抛出的异常,最终返回ConsumeConcurrentlyStatus.CONSUME_SUCCESS,此后这条消息将不会再重试。 自定义消息最大重试次数 消息队列 RocketMQ 允许 Consumer 启动的时候设置最大重试次数,重试时间间隔将按照如下策略: 最大重试次数小于等于 16 次,则重试时间间隔同上表描述。 最大重试次数大于 16 次,超过 16 次的重试时间间隔均为每次 2 小时。 注意: 消息最大重试次数的设置对相同 Group ID 下的所有 Consumer 实例有效。 如果只对相同 Group ID 下两个 Consumer 实例中的其中一个设置了 MaxReconsumeTimes,那么该配置对两个 Consumer 实例均生效。 配置采用覆盖的方式生效,即最后启动的 Consumer 实例会覆盖之前的启动实例的配置。 获取消息重试次数 消费者收到消息后,可按照如下方式获取消息的重试次数:

RocketMQ(六)——集群搭建理论

复制策略 复制策略是Broker得Master与Slave间得数据同步方式。分为同步复制与异步复制: 刷盘策略 刷盘策略指的是broker中消息的落盘方式,即发送到broker内存后消息持久化到磁盘的方式。分为同步刷盘与异步刷盘。 根据Broker集群中各个节点间关系的不同,Broker集群克分为以下几类: 单Master 只有一个broker。这种方式只能在测试时使用,会存在单点问题 多Master无Slave broker集群仅由多个master构成,不存在Slave。同一Topic的各个Queue会平均分布在各个master节点上。 多Master多Slave模式-异步复制 broker集群由多个master构成,每个master右配置了多个slave(在配置了RAID10磁盘阵列的情况下,一个master一般配置一个slave即可)。master与slave的关系使主备关系,即master负责处理消息的读写请求,而slave仅负责消息的备份与master宕机后的角色切换。 该模式的最大特点之一是,当master宕机后slave能够 自动切换 为master。不过由于slave从master的同步具有短暂的延迟(毫秒级),所以当master宕机后,这种异步复制方式 可能会存在少量消息的丢失问题 。 多Master多Slave模式-同步双写 同步双写 ,指的是消息写入master成功后,master会等待slave同步数据成功后才向producer返回成功ACK。该模式与异步复制模式相比,优点是消息的安全性更高。但单个消息的RT略高,从而导致性能略低。 该模式最大的一个问题:Master宕机后,Slave不会自动切换到Master。 最佳实践 一般会为Master配置RAID10磁盘阵列,然后再为其配置一个Slave。即利用了RAID10磁盘阵列的高效、安全性,又解决了可能会影响订阅的问题。

rocketmq总结以及自动化部署策略

是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。 实例消费这个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实例平均消费这个 topic 对应的队列集合。 RocketMQ 网络部署特点 1)高并发读写服务 Broker的高并发读写主要是依靠以下两点: 2) 负载均衡与动态伸缩 负载均衡 :Broker上存Topic信息,Topic由多个队列组成,队列会平均分散在多个Broker上,而Producer的发送机制保证消息尽量平均分布到所有队列中,最终效果就是所有消息都平均落在每个Broker上。 动态伸缩能力(非顺序消息) :Broker的伸缩性体现在两个维度:Topic, Broker。 3) 高可用&高可靠 高可用:集群部署时一般都为主备,备机实时从主机同步消息,如果其中一个主机宕机,备机提供消费服务,但不提供写服务。 高可靠:所有发往broker的消息,有同步刷盘和异步刷盘机制;同步刷盘时,消息写入物理文件才会返回成功,异步刷盘时,只有机器宕机,才会产生消息丢失,broker挂掉可能会发生,但是机器宕机崩溃是很少发生的,除非突然断电 4)Broker与Namesrv的心跳机制 单个Broker跟所有Namesrv保持心跳请求,心跳间隔为30秒,心跳请求中包括当前Broker所有的Topic信息。Namesrv会反查Broer的心跳信息,如果某个Broker在2分钟之内都没有心跳,则认为该Broker下线,调整Topic跟Broker的对应关系。但此时Namesrv不会主动通知Producer、Consumer有Broker宕机。 消费者启动时需要指定Namesrv地址,与其中一个Namesrv建立长连接。消费者每隔30秒从nameserver获取所有topic的最新队列情况,这意味着某个broker如果宕机,客户端最多要30秒才能感知。连接建立后,从namesrv中获取当前消费Topic所涉及的Broker,直连Broker。 Consumer跟Broker是长连接,会每隔30秒发心跳信息到Broker。Broker端每10秒检查一次当前存活的Consumer,若发现某个Consumer 2分钟内没有心跳,就断开与该Consumer的连接,并且向该消费组的其他实例发送通知,触发该消费者集群的负载均衡。 消费者端的负载均衡 先讨论消费者的消费模式,消费者有两种模式消费:集群消费,广播消费。 消费者端的负载均衡,就是集群消费模式下,同一个ID的所有消费者实例平均消费该Topic的所有队列。 Producer启动时,也需要指定Namesrv的地址,从Namesrv集群中选一台建立长连接。如果该Namesrv宕机,会自动连其他Namesrv。直到有可用的Namesrv为止。 生产者每30秒从Namesrv获取Topic跟Broker的映射关系,更新到本地内存中。再跟Topic涉及的所有Broker建立长连接,每隔30秒发一次心跳。在Broker端也会每10秒扫描一次当前注册的Producer,如果发现某个Producer超过2分钟都没有发心跳,则断开连接。 生产者端的负载均衡 生产者发送时,会自动轮询当前所有可发送的broker,一条消息发送成功,下次换另外一个broker发送,以达到消息平均落到所有的broker上。 这里需要注意一点:假如某个Broker宕机,意味生产者最长需要30秒才能感知到。在这期间会向宕机的Broker发送消息。当一条消息发送到某个Broker失败后,会往该broker自动再重发2次,假如还是发送失败,则抛出发送失败异常。业务捕获异常,重新发送即可。客户端里会自动轮询另外一个Broker重新发送,这个对于用户是透明的。 绑定hosts或dns: 主机命名说明: 在实际应用中都会涉及多环境的问题,比如有线下环境(dev)和生产环境(prod),不同环境的应用最好保持配置一致,减少各个每个环境的配置工作量。 Rocketmq各环境统一连接地址 : NAMESRV_ADDR="nameserver1.rocketmq.test.com:9876;nameserver2.rocketmq.test.com:9876" 根据Rocketmq集群说明,其实最终只需暴露nameserver的地址给应用即可,因此,各个环境绑定各个环境对应的hosts/dns即可使用统一连接的地址。 rocketmq各个组件都支持横向扩容: 通过web可以查看集群状态,查看topic信息以及创建更改topic,管理producer和consumer等。 用户手册: https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.md

RocketMQ问题集

RocketMQ单机可以支撑10万+的并发访问,集群部署可以让流量分散在多台机器上来支撑高并发。 MQ会收到大量的消息,并不是立马就会被所有的消费方获取过去消费的,所以一般MQ都得把消息在自己本地磁盘存储起来,然后等待消费方获取消息去处理。 本质上RocketMQ存储海量消息的机制就是分布式的存储。所谓分布式存储,就是把数据分散在多台机器上来存储,每台机器存储一部分消息,这样多台机器加起来就可以存储海量消息了 Broker主从架构以及多副本策略,Master Broker收到消息之后会同步给Slave Broker,这样Slave Broker上就能有一模一样的一份副本数据。即使Master出现故障,还有Slave上有一份数据副本,可以保证数据不丢失,继续对外提供服务,保证了MQ的可靠性和高可用性。 RocketMQ为了解决这个问题,有一个NameServer的概念,他也是独立部署在几台机器上的,然后所有的Broker都会把自己注册到NameServer上去,对于系统而言,如果他要发送消息到Broker,会找NameServer去获取路由信息,就是集群里有哪些Broker等信息.如果系统要从Broker获取消息,也会找NameServer获取路由信息,去找到对应的Broker获取消息。 NameServer支持部署多台机器的,起到高可用的效果,保证任何一台机器宕机,其他机器上的NameServer可以继续对外提供服务。 每个Broker启动都得向所有的NameServer进行注册也就是说,每个NameServer都会有一份集群中所有Broker的信息。 系统自己每隔一段时间,定时发送请求到NameServer去拉取最新的集群Broker信息。 在RocketMQ的实现中,采用的是 TCP长连接 进行通信。 Broker会跟每个NameServer都建立一个TCP长连接 ,然后定时通过TCP长连接发送心跳请求过去靠的是Broker跟NameServer之间的心跳机制,Broker会每隔 30s 给所有的NameServer发送心跳,告诉每个NameServer自己目前还活着。每次NameServer收到一个Broker的心跳,就可以更新一下他的最近一次心跳的时间。然后NameServer会每隔 10s 运行一个任务,去检查一下各个Broker的最近一次心跳时间,如果某个Broker超过 120s 都没发送心跳了,那么就认为这个Broker已经挂掉了。 如果Broker挂掉了,那么作为生产者和消费者的系统是怎么感知到的呢?有两种解决办法。 首先,你可以考虑不发送消息到那台Broker,改成发到其他Broker上去。 其次,假设你必须要发送消息给那台Broker,那么他挂了,他的Slave机器是一个备份,可以继续使用,可以考虑等一会儿去跟他的Slave进行通信。 总之,这些都是思路,但是现在我们先知道,对于生产者而言,他是有一套容错机制的,即使一下子没感知到某个Broker挂了,他可以有别的方案去应对。而且过一会儿,系统又会重新从NameServer拉取最新的路由信息了,此时就会知道有一个Broker已经宕机了。 RocketMQ的Master-Slave模式采取的是Slave Broker不停的发送请求到Master Broker去拉取消息。Pull模式拉取消息 Master Broker主要是接收系统的消息写入,然后会同步给Slave Broker,那么其实本质上Slave Broker也应该有一份一样的数据。而系统在获取消息的时候, 有可能从Master Broker获取消息,也有可能从Slave Broker获取消息 。 Slave Broke挂掉有一点影响,但是影响不太大 因为消息写入全部是发送到Master Broker的,然后消息获取也可以走Master Broker,只不过有一些消息获取可能是从Slave Broker去走的。所以如果Slave Broker挂了,那么此时无论消息写入还是消息拉取,还是可以继续从Master Broke去走,对整体运行不影响。 只不过少了Slave Broker,会导致所有读写压力都集中在Master Broker上。 Master Broker挂掉 对消息的写入和获取都有一定的影响了。但是其实本质上而言,Slave Broker也是跟Master Broker一样有一份数据在的,只不过Slave Broker上的数据可能有部分没来得及从Master Broker同步。 在RocketMQ的实现中,采用的是TCP长连接进行通信。 也就是说,Broker会跟每个NameServer都建立一个TCP长连接,然后定时通过TCP长连接发送心跳请求过去 MQ中的核心数据模型Topic,表达的意思就是一个数据集合的意思。我们可以在创建Topic的时候指定让他里面的数据分散存储在多台Broker机器上,比如一个Topic里有1000万条数据,此时有2台Broker,那么就可以让每台Broker上都放500万条数据。这样就可以把一个Topic代表的数据集合分布式存储在多台机器上了。 发送消息之前需要先有一个Topic,然后在发送消息的时候指定要发送到哪个Topic。既然已经知道要发送的Topic,那么就可以跟NameServer建立一个TCP长连接,然后定时从他那里拉取到最新的路由信息,包括集群里有哪些Broker,集群里有哪些Topic,每个Topic都存储在哪些Broker上。然后生产者系统自然就可以通过路由信息找到自己要投递消息的Topic分布在哪几台Broker上,此时可以根据负载均衡算法,从里面选择一台Broke机器出来,比如round robine轮询算法,或者是hash算法。 注意 :生产者一定是投递消息到Master Broker的,然后Master Broker会同步数据给他的Slave Brokers,实现一份数据多份副本,保证Master故障的时候数据不丢失,而且可以自动把Slave切换为Master提供服务。 消费者系统其实跟生产者系统原理是类似的,他们也会跟NameServer建立长连接,然后拉取路由信息,接着找到自己要获取消息的Topic在哪几台Broker上,就可以跟Broker建立长连接,从里面拉取消息

聊聊RocketMQ(一)

大家好,我是BugKing,不知不觉正式工作快满2年了,在工作之前没有用过消息队列中间件,在这想分享下我这两年对RocketMQ的使用以及一些思考,因为内容比较多,会用好几期来分享。 先简单来聊下我在日常开发中,哪些问题适合使用RocketMQ来解决,因为我是搞IM的,所以下面我都会以IM的角度来分享。 在我负责的IM系统中,经常会遇到业务方群发几十万消息的场景,那面临这么多的请求,如何避免请求压垮我们的IM聊天系统呢?我们的系统应该是在自身能力范围内尽可能多地处理请求,那我们就可以使用消息队列来达到流量控制和保护后端服务的目的。 加入RocketMQ后,整个业务方发送消息的流程变成: 1、业务方调用rpc框架如dubbo接口发送消息后,直接将消息内容放入RocketMQ; 2、发消息后端服务从RocketMQ中获取消息内容,完成后续发消息流量,投递给前端。 这种设计既有优点也有缺点 那想在同一个topic下的某种消息进行流量控制限速呢?有没有什么好的办法? 我的做法是根据某种类型消息的标识,通过令牌桶算法(单机限流),根据你预估的处理能力,为这种消息单独设置一个线程池,线程池队列长度可以设置大些,用这个线程池也单独处理这种消息,这样也不会让其他类型的消息堆积在MQ。 IM系统也需要解决的核心问题时,如何利用有限的服务器资源,尽可能多地处理大量发送消息。在一个正常的IM系统中,一个完整的消息发送包含了很多操作,当你发出去一条消息后可会有这些操作: 1、消息入库 2、消息投递前端 3、用户不在线需要发送离线push。 4、用户这条消息被风控了需要发送风控提示。 5、消息需要统计数据,包含每天发送量,push量等等。 6、.... 如果没有任何优化,正常的处理流程时:消息投递后,依次调用上述流程,然后结束。 对于这几个步骤来说,决定消息是否发送成功,实际上只有消息入库这个步骤,只要消息入库了,用户就一定能看到消息,就算当时没有投递给前端,后续用户拉历史消息也能把消息拉出来,但是为了判断用户在不在线,需不需要发离线push,依赖消息投递前端的结果,所以当消息入库、消息投递前端后,就可以马上结束流程,然后把消息体放入rokcetMQ中,由消息队列异步执行后续的操作。 rocketMQ的另一个作用,就是实现系统之间的解耦。 我们知道订单时在电商系统中比较核心的,当有一个新订单时: 1、支付系统发起支付流程 2、风控需要审核 3、IM系统发送一些卡片消息(比如确认收货地址) 4、统计系统需要统计数据 5、..... 这些订单下油的系统都需要实时获得订单数据。随着业务的发展,订单的下游可能在不断增加,负责订单的程序员不得不花费大量的精力,应对不断变化的下游系统,不停地调试订单系统与下游系统的接口。任何一个接口变更,订单系统就需要修改并上线,这是不能接受的。几乎所有的电商都会选择消息队列来解决类型的系统耦合的问题。这时候引入rocketMQ憨,订单系统在有一个新订单时,发送一条消息到rocketMQ的topic中,所有下游系统都订阅topic,这样每个下游可以根据订单消息来做相应的处理。 RocketMQ用的消息模式时发布 - 订阅模型。在发布 - 订阅模型中,消息的发送方称为发布者,接收方称为订阅者,服务端存放的消息的容器称为主题(Topic)。传统的队列模式和这种模型最大的区别就是,一份消息数据能不能被消费多次对的问题。因为在传统的队列模型中,任何一条消息都只能被一个消费者收到。 RocketMQ是发布-订阅模型,但是RocketMQ也有队列的概念,那队列的作用是什么呢? 我们都知道RocketMQ中有ack机制,确保消息不会在传递过程中由于网络或服务器故障而丢失,在消费端如果收到消息并完成了业务逻辑后,会给MQ回一个消费成功的确认,代表一条消息被成功消费,否则会给消费者重新发送消息,直到成功ack。这个确认机制保证了消息传递的可靠性,但是也带来了一个问题,为了确保消息的有序性,在某一笑消息被成功消息前,下一条消息是不能被消费的,否则违背了有序性这个原则,也就是每个Topic在任意时刻,最多只能有一个消费者在进行消费,这样消费端总体的消费性能就不能通过水平扩展消费者数量来提升,所以RocketMQ引入了队列来解决这个问题。来看下面这个图: RocketMQ的每个Topic都包含多个队列,通过多个队列来实现多实例并行生产和消费。rocketMQ只在队列上保证消息的有序性,Topic层面是无法保证消息严格顺序的。每个消费组都有主题中一份完整的消息,不同消费组之间消费进度不受对方影响, 一条消息被消费组1消费过,也会给消费组2消费。 每一个消费组中包含多个消费者,同一个消费组内的消费者是竞争关系,比如一个消费组内的一条消息被消费者1消费了,就不会再给同组的其他消费者消费。 在一个Topic下的消息消费过程中,消息需要被不同的组进行多次消费,所以每个消费组在每个队列都维护一个消费位置,在这个位置之前的消息都是被消费过的,之后的消息都是没有被消费过。 ** 需要注意的是Topic和消费组的关系、消费组和消费者的关系,消费组和队列数没有关系,不是有多少消费者就有多少队列,队列数可以根据数据量和消费速度合理配置** 可以按照某个唯一标识,比如IM中,根据消息发送方用户id,通过一致性哈希算法,计算出队列ID,指定队列ID发送,这样可以保证相同的用户发的消息总被发送到同一个队列上,可以确保严格顺序。 时间不早了~下期再见。

RocketMQ部署以及调优

RocketMQ的部署,这里不做太多的说明,因为官方文档上面写的已经非常清晰了,可以照着官方文档一顿操作,下面为官方文档的地址: https://github.com/apache/rocketmq/tree/master/docs/cn RocketMQ的调优其实在官方文档的最佳实践中也写的挺清晰的,可以直接参考官方文档,笔者记录的这主要是自己消化后,自己理解的一些东西。 备注:以下几个参数对所有的中间件都起作用,比如redis、kafka等 该参数有三个值可以选择:0、1、2 "0":在中间件系统申请内存对时候,os内核会检查可用内存是否足够,如果足够的话就分配给你,如果感觉剩余内存不是太够,干脆就直接拒绝申请,从而导致中间件申请内存失败,出现异常。 "1":所有可用的物理内存都允许分配给你,只要有内存就给你用,这样可以避免内存申请失败的问题,一般将这个参数的值调整为1。 "2":表示内核允许分配超过所有物理内存和交换空间总和的内存 该参数影响中间件系统可以开启线程的数量,如果参数的值太少,可能会造成有些中间无法开启足够的线程,从而导致出错,然后使中间件系统挂掉。该参数的默认值为:65536,这个默认值有时候是不够的,建议这个参数值调大10倍,为655360。 该参数是用来控制swap行为的,这个简单的来说,就是os会把一部分磁盘空间作为swap区域,然后如果有的进程现在可能是不太活跃,就会被操作系统把进程调整为睡眠状态,把进程中的数据放入磁盘上的swap区域,然后让该进程原来占有的内存空间腾出来,交给其他活跃的进程来使用。 将该参数的值设置为0 :意思就是尽量别把任何一个进程放到磁盘swap区域,尽量大家都用物理内存。 将该参数的值设置为100 :意思是尽量把一些进程给放到swap区域去,内存腾出来给活跃的进程使用。 默认该参数的值为60 :有点偏高,可能会导致我们的中间件运行不活跃的时候被迫腾出内存空间然后放磁盘swap区域去。因此一般在生产环境建议将该值调小一些,比如10,让进程尽量使用物理内存,别放磁盘swap区域去。 该参数是用来控制linux上的最大文件链接数的,默认值为1024,一般肯定是不够的,因为在大量频繁的读写磁盘文件的时候或进行网络通信的时候,都会和这个参数有关系。如果采用默认值,可能会出现如下错误:error: too many openfiles。 总结: 因为RocketMQ是用java语言编写的所以在启动的时候需要使用虚拟机,所以对JVM进行调优。 在runbroker.sh启动脚本中可以看到如下内容: 对上面参数对解释: -server :以服务器的模式启动。 -Xms8g -Xmx8g -Xmn4g : 默认的堆大小是8g,新生代是4g,这里根据实际生产服务器的内存大小,然后进行调整,比如:物理机是48g内存,堆内存可以给到20g,新生代给到8g,剩下的一些留给操作系统。 -XX:+UseG1GC -XX:G1HeapRegionSize=16m :选择G1垃圾回收器来做分代回收,对新生代和老年代都用G1回收。这里把G1的region设置为16m,是因为物理内存比较大,如果物理内存不多时,可以设置成2m,设置大,是可以防止region数量过多。region的含义是:G1的各代存储地址是不连续的,每一代都使用了n个不连续的大小相同的Region,每个Region占有一块连续的虚拟内存地址,如下图所示: 在rocketmq/distribution/target/apache-rocketmq/conf/dledger目录下面的配置文件中,可以找到sendMessageThreadPoolNums=16参数,该参数的意思是:RocketMQ内部用来发送消息的线程池的线程数量,默认是16,如果机器的CPU是24核的话,该参数的值可以设置成24或者30

rocketmq和kafka区别

kafka每个topic的partition都是一个目录,每个partition的数据就放到对应的目录下面。而rocketmq存储数据的时候是将所有topic的数据存放到一个文件Commitlog中,当文件大小超过1G,就向下一个文件中写。kafka每个topic的partition都是一个目录,每个partition的数据就放到对应的目录下面。数据被写到log文件中,由于生产者生产的消息会不断追加到log文件末尾,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制。它将每个Partition分为多个Segment,每个Segment对应两个文件:“.index”索引文件和“.log”数据文件。“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中Message的物理偏移量。而rocketmq存储数据的时候是将所有topic的数据存放到一个文件Commitlog中,当文件大小超过1G,就向下一个文件中写。同时,Broker会为每一个主题维护各自的ConsumerQueue文件,文件中记录了该主题消息的索引,包括在Commitlog中的偏移位置,消息大小及校验和,以便于在消费时快速的定位到消息位置。ConsumerQueue的维护是异步进行的,不影响消息生产的主流程,即使ConsumerQueue没有及时更新的情况下,服务异常终止,下次启动时也可以根据Commitlog文件中的内容对ConsumerQueue进行恢复。这样的文件结构也就决定了,kafka的IO吞吐量会特别高(多topic并发写),但同样也会受制于topic个数过多的IO切换问题。而rocketMQ恰恰相反,由于所有topic的数据都是记录在一个文件当中,所以topic较少时性能相比kafka交慢,但topic较多时,rocketmq的性能几乎时没有影响的。

RocketMQ 简介

RocketMQ在阿里内部叫做Metaq(最早名为Metamorphosis,中文意思 变形记 ,是作家卡夫卡的中篇小说代表作,可见是为了致敬Kafka)。 RocketMQ是Metaq3.0之后的开源版本。 Metaq在阿里巴巴集团内部、蚂蚁金服、菜鸟等各业务中被广泛使用,接入了上万个应用系统中。并平稳支撑了历年双十一大促(万亿级的消息),在性能、稳定性、可靠性等方面表现出色,在整个阿里技术体系和大中台战略中发挥着举足轻重的作用。 Metaq最终源于Kafka,早起借鉴了Kafka很多优秀的设计。但是由于Kafka是Scale语言编写而阿里系主要使用Java,且无法满足阿里的电商、金融业务场景,所以誓嘉(花名)团队用Java重新造轮子,并做了大量的改造和优化。 在此之前,淘宝有一款消息中间件名为 Notify ,目前已经逐步被Metaq所取代。 第一代的Notify主要使用了推模型,解决了事务消息;第二代的MetaQ主要使用了拉模型,解决了顺序消息和海量堆积的问题。相比起Kafka使用的Scale语言编写,RabbitMQ 使用Erlang语言编写,基于Java的RocketMQ开源后更容易被广泛的研究,以及其他大厂定制开发。 执行流程: RocketMQ 消息订阅有两种模式,一种是Push模式(MQPushConsumer),即MQServer主动向消费端推送;另外一种是Pull模式(MQPullConsumer),即消费端在需要时,主动到MQ Server拉取。但在具体实现时, Push和Pull模式本质都是采用消费端主动拉取的方式 ,即 Consumer 轮询从 Broker 拉取消息。 优点:就是实时性高。 缺点:在于消费端的处理能力有限,当瞬间推送很多消息给消费端时,容易造成消费端的消息积压,严重时会压垮客户端。 Push 与 Pull 区别: Push 方式里,Consumer 把长轮询的动作封装了,并注册MessageListener监听器,取到消息后,唤醒MessageListener的consumeMessage()来消费,对用户而言,感觉消息是被推送过来的。 Pull 方式里,取消息的过程需要用户自己主动调用,首先通过打算消费的 Topic 拿到 MessageQueue 的集合,遍历MessageQueue集合,然后针对每个MessageQueue批量取消息,一次取完后,记录该队列下一次要取的开始offset,直到取完了,再换另一个MessageQueue。 RocketMQ 使用长轮询机制来模拟 Push 效果,算是兼顾了二者的优点。

RocketMQ架构分析

RocketMQ是阿里巴巴捐赠给appache的MQ开源组件,从架构上我们分析一下。 kafka是依靠Zookeeper进行集群选举的,在rocketMQ的同样位置上是NameServer,这个Nameserver仅仅是注册服务,没有选举能力。每个broker都和NameServer进行连接,通过心跳维持状态。 producer和consumer定时到Nameserver拉取broker信息,并且和自己所消费的broker建立连接。这就和微服务的体系一模一样了。 那么rocketMQ的集群选举怎么实现的呢,通过集成了Dledge实现,Dledge是个jar包,实现了raft算法。 如图,topic可在多个broker上形成分片,producer可写数据到不通的分片,分片信息也可以由不同的group进行消费。 如下介绍存储,rocketMQ可配置主备,形成主备复制。 http://rocketmq.apache.org/rocketmq/how-to-support-more-queues-in-rocketmq/ 介绍了rocketMQ存储设计初衷,和kafka存储不同,kafka在每个partition中存储了数据,而RocketMQ将实际消息集中存储,在messageQueue中存储的是元数据信息,通过元数据信息可以索引到CommitLog。 对于保存的数据,每天会删除数据;如果磁盘满,超过设置阈值,则不允许写入数据。 RocketMQ的设计确保了消息的并发处理能力,但是有时候,消息是有状态的,即有顺序,RocketMQ怎么实现呢? 发送到临时缓存,到达延迟时间后由delay service路由给topic。 如果消费返回了consumer_later,则如上述延迟消息一样,会延迟一段时间,进入死信队列,消费死信队列,重新处理。 如果业务规模小,不会改源码,就选用RabbitMQ;如果业务规模大,不允许丢消息,追求效率高,用RocketMQ;如果业务规模大,运行少量丢消息,吞吐量大,用Kafka;如果用于大数据,毫无疑问选kafka。

RocketMQ原理解析

RocketMQ原理解析 说明: NameServer是没有状态的,即NameServer中的Broker和topic等状态信息(通过其他角色上报获取)都是保存在内存中的,不会持久化存储(可通过配置实现),集群可以横向扩展。主要功能如下: a.接收Broker(master和slave)启动时的注册路由信息; b.为producer和consumer提供路由服务,即通过topic名字获取所有broker的路由信息; c.接收broker发送的心跳信息,如果心跳的时间戳过期NameServer关闭与broker的连接。 Broker向NameServer注册topic配置信息,配置信息格式如下: Broker的消息存储 Rocketmq的消息的存储是由consumeQueue和 commitLog 配合完成的,commitLog保存消息的物理数据,consumeQueue是消息的逻辑队列,类似于索引,存储的是指向物理存储的地址。在一个Broker上,只有一个commitLog,所有consumeQueue共享同一个commitLog。 假如topic的名字是Topic-Lance,配置的读写队列有queue-1和queue-2,那么Topic-Lance和queue-1组成一个consumeQueue,Topic-Lance和queue-2组成另一个consumeQueue。 假如broker-A(包含queue-0,queue-1,queue-2), broker-B(包含queue-0,queue-1)两台broker机器都配置了Topic-Lance,那么broker启动的时候,注册到NameServer的Topic-Lance的路由有broker-A-queue-0,broker-A-queue-1,broker-A-queue-2,broker-B-queue-0,broker-B-queue-1共5个consumeQueue。 为了提高读写性能,commitLog采取顺序写,随机读(通过pagecache机制批量从磁盘读取到内存,加速后续的读取速度),consumeQueue大部分读入内存(如果consumeQueue因为重启等因素丢失,可以通过commitLog重建) a.Producer发送消息时(必须制定topic),首先从本地的Producer集合中获取topic->broker的路由信息,如果没有,则从nameserver中获取topic->broker路由,并缓存到本地集合; b.定时从nameServer获取最新的topic路由信息; c.Producer定时将Producer的group信息发送到对应的broker上; d.Producer发送消息到Master的broker上,通过Broker的主从复制copy到slave的broker上。 发送实现轮询方式: a.向NameServer注册Consumer; b.定时从NameServer获取topic路由信息; c.定时清理下线的broker; d.向所有broker发送心跳; e.动态调整消费线程池; f.负责负载均衡服务RebalanceService。 RocketMQ是基于pull模式拉取消息,consumer做负载均衡并通过长轮询向broker拉消息,长轮询拉取消息后回调MessageListener接口实现完成消费。 关于RocketMQ长轮询可参考: https://www.jianshu.com/p/48dbc9eee890 RocketMQ默认保存3天,commit log刷盘间隔,默认1秒 ...... 默认情况下是失败3次重试,可通过retryTimesWhenSendFailed定义重试次数; 1.Exception的情况,一般重复16次 10s、30s、1mins、2mins、3mins等,可以通过设置transactionCheckMax设置; 2.超时情况(Consumer端没有返回CONSUME_SUCCESS,也没有返回RECONSUME_LATER),MQ会无限制的发送给Consumer端,默认超时时间时15分钟。

我的电脑中了 Trojan.win32.starpaqe.amq

http://it.rising.com.cn/Channels/Service/index.shtml这上面有专杀 你可以去看看

在C#中怎么实现ActiveMQ的连接?

using System;using System.Collections.Generic;using System.Text;using System.Threading;using ActiveMQ;using Spring.Messaging.Nms;using Spring.Messaging.Nms.Listener;namespace ListenerConsole{ class Program { private const string URI = "tcp://localhost:61616"; private const string DESTINATION = "test.queue";static void Main(string[] args) { try { ConnectionFactory connectionFactory = new ConnectionFactory(URI);using (SimpleMessageListenerContainer listenerContainer = new SimpleMessageListenerContainer()) { listenerContainer.ConnectionFactory = connectionFactory; listenerContainer.DestinationName = DESTINATION; listenerContainer.MessageListener = new Listener(); listenerContainer.AfterPropertiesSet(); Console.WriteLine("Listener started."); Console.WriteLine("Press <ENTER> to exit."); Console.ReadLine(); } } catch (Exception ex) { Console.WriteLine(ex); Console.WriteLine("Press <ENTER> to exit."); Console.Read(); }} }}using System;using Spring.Messaging.Nms;using NMS;namespace ListenerConsole{ class Listener : IMessageListener { public Listener() { Console.WriteLine("Listener created.rn"); } #region IMessageListener Memberspublic void OnMessage(NMS.IMessage message) { ITextMessage textMessage = message as ITextMessage; Console.WriteLine(textMessage.Text); }#endregion }}

ActiveMQ怎么实现两台服务器之间的通讯。比如A发消息给B,B能收到。具体的代码和配置。

公共静态无效的主要(字串[] args)抛出那么JMSException {字符串URL =“TCP :/ /本地主机:61616; ActiveMQConnectionFactory的connectionFactory =:新ActiveMQConnectionFactory(); / /设置的用户名和密码,用户名和密码的conf目录credentials.properties的文件也可以被配置在activemq.xml connectionFactory.setUserName“(”系统“); ”的connectionFactory setPassword( “经理人”); / /创建一个连接的接口连接connectionFactory.createConnection(); connection.start的()会话连接。创建会议上的(假Session.CLIENT_ACKNOWLEDGE); / /创建目标,创建一个主题,你也可以创建一个队列的目的地的的的目标session.createQueue(“1230”); ...... /> / /创建一个消息消费者 MessageProducer:制造商的目标:= session.createProducer(); producer.setDeliveryMode(DeliveryMode.PERSISTENT); 字符串JMSCorrelationID “"S +”1001“+”"“; ”的MessageConsumer:消费者session.createConsumer(目标),选择 TextMessage的TM = session.createTextMessage(12345111); TM。 setJMSCorrelationID(1001“); producer.send(TM); TextMessage的(真实){ TM1 =(TextMessage的介质)consumer.receive(1000); (null! ,TM1){ System.out.println(TM1); tm1.acknowledge(); System.out.println(tm1.getText()); } 突破; } consumer.close(); producer.close(); session.close(); BR />连接关闭();} }

如何查看activemq 的消息接收记录

接收消息,参数:接收消息的超时时间,为0的话则不超时,receive返回下一个消息,但是超时了或者消费者被关闭,返回null Message message = consumer.receive(1000); if (message instanceof TextMessage) { TextMessage textMessage = (TextMessage) message; String text = textMessage.getText(); logger.info("接收的消息:"+" "+text);

求教,如何使用Python向activeMQ发送ByteMessage类型的消息

你好,具体代码可以参考下面的:import javax.jms.Connection;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms.ObjectMessage;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.ActiveMQPrefetchPolicy;import org.apache.camel.component.jms.JmsMessage;import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;//发送TextMessagepublic class SendMessage { private static final String url = "tcp://localhost:61616";; private static final String QUEUE_NAME = "choice.queue"; protected String expectedBody = "<hello>world!</hello>"; public void sendMessage() throws JMSException{ Connection connection = null; try{ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url); connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(QUEUE_NAME); MessageProducer producer = session.createProducer(destination); TextMessage message = session.createTextMessage(expectedBody); message.setStringProperty("headname", "remoteB"); producer.send(message); }catch(Exception e){ e.printStackTrace(); }finally{ connection.close(); } }***************************************************************************************import java.io.File;import java.io.FileInputStream;import java.io.IOException;import javax.jms.BytesMessage;import javax.jms.Connection;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms.Session;import org.apache.activemq.ActiveMQConnectionFactory;//发送BytesMessagepublic class SendMessage { private String url = "tcp://localhost:61616"; public void sendMessage() throws JMSException{ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("test.queue"); MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); BytesMessage message = session.createBytesMessage(); byte[] content = getFileByte("d://test.jar"); message.writeBytes(content); try{ producer.send(message); System.out.println("successful send message"); }catch(Exception e){ e.printStackTrace(); e.getMessage(); }finally{ session.close(); connection.close(); } } private byte[] getFileByte(String filename){ byte[] buffer = null; FileInputStream fin = null; try { File file = new File(filename); fin = new FileInputStream(file); buffer = new byte[fin.available()]; fin.read(buffer); } catch (Exception e) { e.printStackTrace(); } finally { try { fin.close(); } catch (IOException e) { e.printStackTrace(); } } return buffer; }发送完消息后可以访问 http://localhost:8161/admin/queues.jsp 看到相应的queue中是否有消息 适用收取TextMessage消息 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;public class ReceiveMessage { private static final String url = "tcp://172.16.168.167:61616"; private static final String QUEUE_NAME = "szf.queue";public void receiveMessage(){ Connection connection = null; try{ try{ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url); connection = connectionFactory.createConnection(); }catch(Exception e){// ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);// connection = connectionFactory.createConnection(); } connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(QUEUE_NAME); MessageConsumer consumer = session.createConsumer(destination); consumeMessagesAndClose(connection,session,consumer); }catch(Exception e){ } } protected void consumeMessagesAndClose(Connection connection, Session session, MessageConsumer consumer) throws JMSException { for (int i = 0; i < 1;) { Message message = consumer.receive(1000); if (message != null) { i++; onMessage(message); } } System.out.println("Closing connection"); consumer.close(); session.close(); connection.close(); } public void onMessage(Message message){ try{ if (message instanceof TextMessage) { TextMessage txtMsg = (TextMessage)message; String msg = txtMsg.getText(); System.out.println("Received: " + msg); } }catch(Exception e){ e.printStackTrace(); } } public static void main(String args[]){ ReceiveMessage rm = new ReceiveMessage(); rm.receiveMessage(); }}

ActiveMQ 中的TextMessage 长度有限制吗

TextMessage 内容一般存储于 string Text { get; set; }所以,问题在于string类型而string其实就是一个字符数组,最大长度受限于内存大小和int.MaxValue,不会长于4G,32位系统上一个进程可支配空间只有2G多,所以一般的string大小最大远远小于这个值,但是肯定够用的...换句话说这个问题没什么意义因此,一般情况下,可以理解成TextMessage长度无限制。

【求助】做HMQC 或HSQC时必需要先有C ,H 数据吗?

绻粗湃ゴ蚨桌慈范ń峁箏~~二维谱挺贵~~~sisiyu(站内联系TA)从做谱顺序来说,如果想做BC,QC,前提必须得做H,C谱,我曾经问过做核磁的老师这个问题。sunny1212(站内联系TA)Originally posted by sisiyu at 2009-12-4 11:41: 从做谱顺序来说,如果想做BC,QC,前提必须得做H,C谱,我曾经问过做核磁的老师这个问题。 万不得已才做C谱,C谱采集的时间比任何谱的时间都要长(8倍时间)。而且绝大多数样品从HMBC中就可以读出碳的化学位移。QC做的是单键相关C_H,BC是多键相关。BC实际要很长(但远远比C谱短)fengfang66(站内联系TA)在做二维谱之前,必须得做一维的了,sunny1212(站内联系TA)Originally posted by sisiyu at 2009-12-4 11:41: 从做谱顺序来说,如果想做BC,QC,前提必须得做H,C谱,我曾经问过做核磁的老师这个问题。 你的老师说的不对,应该是反过来!先做QC,BC,绝大部分化合物用BC可以确定全部碳!lazierboy(站内联系TA)我们学校分析中心的老师说做二维之前必须先做一维sunny1212(站内联系TA)Originally posted by lazierboy at 2009-12-6 01:05: 我们学校分析中心的老师说做二维之前必须先做一维 不得不告诉你,分析中心的老师说先做二维谱是指的氢谱,先匀好场以后才能做二维图谱。不要误解为先做碳谱。yymslx2010(站内联系TA)氢谱是必须做的吧landa_sh(站内联系TA)LZ的问题从两个角度来讲: 1.数据采集,做C或BC谱,C信号的采集是必需的,这个时间很长; 2.数据处理,即做出常见的图谱,这一步中可以不做C谱只做BC,通过BC归属C信号 但一般做核磁的人不会这样的,因为C信号的采集累积是最费时间的,不乐意做两份工作只收一份的钱。panda3713(站内联系TA)需要看你采集一维谱图时的参数luoduoxc(站内联系TA)一般来讲,做谱顺序是:氢谱,碳谱---HMQC---HMBC---NORSY---等jiaweili2001(站内联系TA)樓主角度有問題,應先做一維的啊,做二維的確實太浪費。longying909(站内联系TA)Originally posted by sunny1212 at 2009-12-5 09:08: 万不得已才做C谱,C谱采集的时间比任何谱的时间都要长(8倍时间)。而且绝大多数样品从HMBC中就可以读出碳的化学位移。QC做的是单键相关C_H,BC是多键相关。BC实际要很长(但远远比C谱短) 不做碳谱能直接做HMBC吗?我的化合物量很少,只做了氢谱没法做碳谱,是不是无法鉴定结构了?:( 样品很少的情况下,建议做HMBC,一般来讲,可能会将你化合物中所有4Jc-h之内碳的信号都会看到.sunny1212(站内联系TA)通常实验室的核磁对样品的量要求mg级别以上(当然了还要看分子量)。但是如果有超低温探头,并且选用微量核磁管的话,对样品量的要求急剧下降。事实上如果样品只有0.1mg,也可以在两个小时内就可以做出COSyTOCSYHSQCHMBC。还不一定做的出来

如图,关于香港中文大学药剂学院博士分类的问题,请问M.Phil. PH.D,MCP,PMQ分别代

in 。。。是指这个学位的主修专业,在讨论与本身的学位资格的时候可以忽略。Master of Philosophy 简称MPhil.,直译哲学硕士,是研究型硕士(传统的硕士),一般而言作为博士课程的预备课程。入读MPhil.的学生,很大机会会在一两年后直接转入博士课程。Doctor of Philosophy 简称PhD.即 Philosophy Doctor。直翻译哲学博士,就是一般而言的博士学位。以上两者,一般都能申请到奖学金,包学费、生活费,甚至略微有余。平时以跟着导师从事科学研究、撰写论文为主,修少量课程,也会作为助教为本科生上课。门槛都比较高。Master of Science 简称MSc. 直译理科硕士,就是一般所说的修课式硕士。9成9都要自行负担高昂的学费生活费,学制一般一到两年。和本科生一样,大部分时间只要上课考试即可。但是门槛较低,适合短期进修后立即在香港或者回国找工作。最后的MCP,则是Pharmacy专业的专门硕士学位。只有本专业的人才会了解。估计跟专业资格的获取等有直接关系。
 首页 上一页  1 2