版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
每特学院Java互联网架构培 老如果由于服务对象或者网络故障导致用户的请求不可达,客户会受到异常JMSPoint-to-Point(P2P)Point-to-Point(P2P)Publish/Subscribe(Pub/Sub)---P2P(点对点P2P消息队列发送者接收者P2PPub/Sub发布与订阅客户端将消息发送到。多个发布者将消息发送到Topic,系统将这些消息传递发布者和订阅者之间有时间上的依赖性。针对某个(Topic)的订阅者,它必为了缓和这样严格的时间相关性,JMSPub/SubJMSJMSreceivereceive订阅者或接收者可以为一个消息器。当消息到达之后,系统自动调用onMessage用户、订单修改库存、日志MQErlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP,SMTPSTOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实由(Routing),负载均衡(Loadbalance)或者数据持久化都有很好的支持。是一个Key-Value的NoSQL数据库,开发很活跃,虽然它是一个Key-Value数据库MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对RabbitMQRedis10010万次记录一次执行时128Bytes、512Bytes、1K10K四个不同大小的数据。实验表明:入Redis的性能要高于RabbitMQ10K,Redis则慢的受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQRedis。号称最快的消息队列系统,尤其针对大吞吐量的需求场景。ZMQRabbitMQ不擅MQ能够应用成功的。ZeroMQ具有一个独特的非中间件的模式,你不需要安装和运ZeroMQ程序库,可以使用NuGet安装,然后你就可以愉快的在应用程序之间发送ZeroMQ仅提供非持久性的队列,也就是说如果down机,数据将会丢失。其中,的Storm中使用ZeroMQ作为数据流的传输。是Apache下的一个子项目。类似于ZeroMQ,它能够以人和点对点的技术实现队ZeroMQ、ActiveMQC++、Java、.Net,、PythonPhp、Ruby等。KafkaApachePublish/Subscribe消息队JafkaKafkaKafka的一个升级版。具有以下特性:O(1)的系统开销下进行消息持久化;高吞吐,在一台普通的服务器上10W/s的吞吐速率;完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现复杂均衡;支持Hadoop数据并行加载,对于像Hadoop的Kafka通过Hadoop的并行加载机制来统一了和离线的消息处理,这一点也是本课题所研究系统所看重的。ApacheKafkaActiveMQ是一个非常轻量级的消息系统,除其他一些队列列表HornetQ、ApacheQpid、Sparrow、Starling、Kestrel、Beanstalkd、AmazonSQS就不再一一分析。ActiveMQwindowActiveMQActiveMQJavajavaJDK并配置然后解压的apache-activemq-5.10- .133406-78-bin.zip压缩包到一个 进入 ,发现有win32和win64两个文件夹,这2个文件夹分别对应 输入用户名,默认用户名为admin、admin,这个用户名是在conf/perties中配置的。输入用户名后便可看到如下图的ActiveMQ控制台界面了。4.1.1NumberOfConsumersNumberOfPendingMessagesMessagesEnqueuedMessagesDequeued出了队列的消息可以理解为是消费这消费掉的数量queuestopics11。011.12.没有消费者时PendingMessages和入队列数量一样有消费者消费的时候Pedding会减少出队列会增加到最后就是入队列和出队列的数量一样多ActiveMQ(p2p)通讯模式pompublicpublicclassProducterpublicstaticvoidmain(String[]args)throws ceptionConnectionFactory:连接工厂,JMSConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://:61616");JMS客户端到JMSProviderConnectionconnection=connectionFactory.createConnection();SessionSessionsession=connection.createSession(Boolean.falst,Destination:消息的目的地;消息发送给谁//Destinationdestination=session.createQueue("my-//MessageProducerproducer=for(inti=1;i<=5;i++)sendMsg(session,producer,}}*@param**@param*publicstaticvoidsendMsg(Sessionsession,MessageProducerproducer,inti)throws ceptionTextMessagemessage=oActiveMQ!"+//}}publicpublicclassJmsReceiverpublicstaticvoidmain(String[]args)throws ceptionConnectionFactory:连接工厂,JMSConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://:61616");JMS客户端到JMSProviderConnectionconnection=connectionFactory.createConnection();SessionSessionsession=connection.createSession(Boolean.TRUE,Destination:消息的目的地;消息发送给谁//Destinationdestination=session.createQueue("my-MessageConsumerconsumer=session.createConsumer(destination);while(true){TextMessagemessage=(TextMessage)consumer.receive();if(null!=message){System.out.println("收到消息:}}}}JMS1如果session2Session.AUTO_ACKNOWLEDGE消息自动签收Session._ACKNOWLEDGE客戶端调用acknowledge方法手动签Session.DUPS_OK_ACKNOWLEDGE户处理消息和消息被确认。在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgementmode)。该参数有以下三个可选NumberOfConsumersNumberOfPendingMessagesMessagesEnqueued进入队列的消息进入队列的总数量,MessagesDequeuedSessionsession=createConnectioncreateSession(BooleanFALSE,TextMessagetextMessage=(TextMessage)createConsumertextMessageSessionsession=createConnectioncreateSession(BooleanFALSE,SessionSessionsession=createConnectioncreateSession(BooleanFALSE,SessionSessionsession=createConnectioncreateSession(BooleanTRUE,SessionAUTO_ACKNOWLEDGE);sessioncommit();Sessionsession=createConnectioncreateSession(BooleanTRUE,SessionAUTO_ACKNOWLEDGE);sessioncommit();ActiveMQproducersetDeliveryMode(DeliveryModepublicpublicclassTOPSendprivatestaticStringBROKERURL="tcp://:61616";privatestaticStringTOPIC="my-topic";publicstaticvoidmain(String[]args)throws ception}staticpublicvoidstart()throwsJMception{ ActiveMQConnectionFactoryactiveMQConnectionFactory=newActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,BROKERURL);Connectionconnection=启动JMSSessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);MessageProducerproducer=session.createProducer(null);send(producer,session);}staticpublicvoidsend(MessageProducerproducer,Sessionsession)throwsJM ception{for(inti=1;i<=5;i++){System.out.println("我是消息TextMessagetextMessagesession.createTextMessage("我是消息i);Destinationdestination=session.createTopic(TOPIC);producer.send(destination,textMessage);}}}消费者publicpublicclassTopReceiverprivatestaticStringBROKERURL=privateprivatestaticStringTOPIC="my-publicstaticvoidmain(String[]args)throws ception}staticpublicvoidstart()throws ceptionActiveMQConnectionFactoryactiveMQConnectionFactory=newActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,BROKERURL);Connectionconnection=启动JMS//Sessionsession=connection.createSession(false,Topictopic=MessageConsumerconsumer=//consumer.setMessageListener(newMsgListener());while(true){TextMessagetextMessage=(TextMessage)consumer.receive();if(textMessage!=null){System.out.println("接受到消息//}else}}}}SpringBoot生产者maven<relativePath/><!--lookupparentfromrepository--springbootweb支持:mvc,aopapplication.ymlbroker-url:tcp://:61616user:adminpassword:adminqueue:springboot-queueport:publicclassQueueConfig{privateStringqueue;publicQueuelogQueue()returnnew}publicJmsTem tejmsTem te(ActiveMQConnectionFactoryactiveMQConnectionFactory,Queuequeue){ tejmsTem te=newJmsTem tesetDeliveryMode(2);//进行持久化配置1表示非持久化,2表示持久化</span> tesetConnectionFactory(activeMQConnectionFactory); te estination(queue tesetSessionAcknowledgeMode(4);//客户端签收模式</span>returnjmsTem }//定义一个消 @Bean(name=publicDefaultJmsListenerContainerFactoryActiveMQConnectionFactoryactiveMQConnectionFactory){DefaultJmsListenerContainerFactoryActiveMQConnectionFactoryactiveMQConnectionFactory){DefaultJmsListenerContainerFactoryfactory=newDefaultJmsListenerContainerFactory();factorysetConnectionFactory(activeMQConnectionFactory);factorysetConcurrency("1-factorysetRecoveryInterval(1000L);factorysetSessionAcknowledgeMode(4);returnfactory;}}publicclassProducer{privateJmsMessagingTemprivateQueuete@Scheduled(fixedDelay=publicvoidsend() te.convertAndSend(queue,测试消息队
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学农学(农村社会学)试题及答案
- 2025年大学大一(水产养殖学)水产养殖生态学基础阶段测试试题及答案
- 2026年客运司机(车辆检查)试题及答案
- 2025年高职铁道工程技术(铁道施工基础)试题及答案
- 2025年大学健康管理(慢病实操)试题及答案
- 2025年高职高分子材料工程技术(高分子工程工艺)试题及答案
- 2025年高职形象设计(婚庆造型设计)试题及答案
- 2025年高职应用心理学(咨询技巧)试题及答案
- 2025年高职(客户关系管理)客户维护单元测试试题及答案
- 2026年运动营养(健身补剂选择)试题及答案
- 物业维修工安全培训课件
- 户外电源技术讲解
- 一年级体育课题申报书
- 墙面夹芯板安装施工方案
- 六年级语文阅读理解之托物言志(知识梳理技法点拨例文分析)(含答案)
- 钣金供应商管理办法
- 煤矿自救器使用课件
- 《油气管道无人机智能巡检系统技术管理规范》
- 2025电力公司员工聘用合同
- 运输公司安全教育培训记录范文
- 2025年贵州省委党校在职研究生招生考试(中共党史)历年参考题库含答案详解(5卷)
评论
0/150
提交评论