×

activemq集群 c

activemq集群(如何心跳感知与ActiveMQ服务器的连接状态)

admin admin 发表于2022-09-04 06:36:42 浏览142 评论0

抢沙发发表评论

本文目录

如何心跳感知与ActiveMQ服务器的连接状态


当我们需要部署一套安全稳定的ActiveMQ时,可以使用集群方式,这需要部署至少两套的ActiveMQ服务,但是如果ActiveMQ整个集群也宕机,这时消息都无法发送,这可怎么办,还好ActiveMQ提供了消息传输监听(transportListener),可以对ActiveMQConnectionFactory添加一个Activemq的消息传输监听,该监听实现 Activemq的TransportListener接口。该接口实现的监听方法有onCommand(),onException(), transportResumed () ,transportInterupted()等监听方法。拥有这些方法就足以实时感知ActiveMQ服务器的状态了,当发现服务器无法连接时,就采取相应措施,如把消息存储在本地,当服务器恢复时再进行发送。
package com.jms.failover;
import java.io.IOException;
import org.apache.activemq.transport.TransportListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ActiveMQTransportListener implements TransportListener{
protected final Logger logger = LoggerFactory.getLogger(ActiveMQTransportListener.class);
/**
* 对消息传输命令进行监控
* @param command
*/
@Override
public void onCommand(Object o) {
}
/**
* 对监控到的异常进行触发
* @param error
*/
@Override
public void onException(IOException error) {
logger.error(“onException -》 消息服务器连接错误......“);
}
/**
* 当failover时触发
*/
@Override
public void transportInterupted() {
logger.error(“transportInterupted -》 消息服务器连接发生中断......“);
//这里就可以状态进行标识了
}
/**
* 监控到failover恢复后进行触发
*/
@Override
public void transportResumed() {
logger.info(“transportResumed -》 消息服务器连接已恢复......“);
//这里就可以进行状态标识了
}
}
《!-- ActiveMQ 连接工厂,用于连接远程broker --》
《bean id=“connectionFactory“ class=“org.apache.activemq.ActiveMQConnectionFactory“ destroy-method=“stop“》
《property name=“brokerURL“ value=“${activemq.broker.failover.uri}“ /》
《property name=“userName“ value=“${activemq.username}“ /》
《property name=“password“ value=“${activemq.password}“ /》
《property name=“useAsyncSend“ value=“true“ /》
《property name=“alwaysSessionAsync“ value=“true“ /》
《property name=“redeliveryPolicy“ ref=“redeliveryPolicy“ /》
《property name=“prefetchPolicy“ ref=“prefetchPolicy“ /》
《!-- 消息传输监听器 --》
《property name=“transportListener“》
《bean class=“com.jms.failover.ActiveMQTransportListener“ /》
《/property》
《property name=“dispatchAsync“ value=“true“ /》
《/bean》

activemq消息队列和kafka有什么区别


  能选择三种:
  
  1. ActiveMQ/ApolloMQ
  优点:牌消息队列使用Java语言编写JMS支持采用线程并发资源消耗比较主语言Java重点考虑
  缺点:由于历史悠久历史包袱较版本更新缓慢集群模式需要依赖Zookeeper实现新架构产品命名Apollo号称代ActiveMQ目前案例较少
  
  2. RocketMQ/Kafka
  优点:专海量消息传递打造主张使用拉模式集群、HA、负载均衡支持说句适合适合看没量
  缺点:所谓鱼熊掌兼放弃些消息间件灵性使用场景较窄需关注业务模式否契合否则山寨变相使用别扭除外RocketMQ没.NET客户端用RocketMQ身名门使用者态较毕竟消息量能达种体量公司直接购买阿云消息服务Kafka态完善其代码用Scala语言写靠性比RocketMQ低些
  
  3. RabbitMQ
  优点:态丰富使用者众前面踩坑AMQP协议领导实现支持种场景淘宝MySQL集群内部使用进行通讯OpenStack源云平台通信组件先金融行业运用
  缺点:Erlang代码Hold住? 虽Erlang集群化RabbitMQ高用面做起特别应手别相信广告

activemq集群能主从自动切换吗


集群中,可能存在mysql主从复制。 但主从主要是做读写分离的。另外主从出现故障可能性比较大。 mysql集群很复杂,当然小集群比较简单,集群主要是实现高可用和高负载,主从只是集群可能用到的一个mysql功能了。
-activemq集群

IBM的MQ和Active MQ相比有哪些优点和不足


1. IBM WebSphere MQ消息中间件有很多的特性和优点,使用IBM WebSphere MQ可以简化和优化消息通讯的应用设计。为了满足用户各种不同的应用的通讯需求,IBM WebSphere MQ采用了大量业界领先的技术,并拥有许多先进的功能,其中很多是其他厂商所无能为力的。将这些技术和功能应用到客户的通讯系统之中,可以简化应用逻辑,优化系统架构,从而提高整个系统的可靠性、可用性和可扩展性。下面将介绍怎样使用IBM WebSphereMQ的一些特性来简化程序。
2. ActiveMQ速度非常快;一般要比jbossMQ快10倍。
  优点:是一个快速的开源消息组件(框架),支持集群,同等网络,自动检测,TCP,SSL,广播,持久化,XA,和J2EE1.4容器无缝结合,并且支持轻量级容器和大多数跨语言客户端上的Java虚拟机。消息异步接受,减少软件多系统集成的耦合度。消息可靠接收,确保消息在中间件可靠保存,多个消息也可以组成原子事务。
  缺点:ActiveMQ默认的配置性能偏低,需要优化配置,但是配置文件复杂,ActiveMQ本身不提供管理工具;示例代码少;主页上的文档看上去比较全面,但是缺乏一种有效的组织方式,文档只有片段,用户很难由浅入深进行了解,二、文档整体的专业性太强。在研究阶段可以通过查maillist、看Javadoc、分析源代码来了解。
-c

activemq 什么是持久化mysql集群


jdbc和连接池对于你这个场景来说,都足够,既然用spring管理了,建议还是使用连接池,另外,spring自身没有实现连接池,一般都是对第三方连接池的包装,常见的有C3P0,dbcp以及最近比较流行的boneCP等,这几个配置都差不多太多,以boneCP为例:
-activemq集群

请用白话讲解ActiveMQ的用途


用途就是用来处理消息,也就是处理JMS的。消息队列在大型电子商务类网站,如京东、淘宝、去哪儿等网站有着深入的应用,队列的主要作用是消除高并发访问高峰,加快网站的响应速度。

在不使用消息队列的情况下,用户的请求数据直接写入数据库,高发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧,但使用队列后,用户的请求发给队列后立即返回。

例如:不能直接给用户提示订单提交成功,京东上提示:“您提交了订单,请等待系统确认”再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。

由于消息队列的服务处理速度远快于数据库,因此用户的响应延迟可得到有效改善。

扩展资料:

ActiveMQ主要有以下几种使用场景

1、异步调用。

2、一对多通信。

3、做多个系统的集成、同构、异构。

4、作为RPC的替代。

5、多个应用相互解耦。

6、作为事件驱动架构的幕后支撑。

7、为了提高系统的可伸缩性。


分布式事务处理解决方案中,ActiveMQ应该怎么使用


目前比较多的解决方案有几个:
一、结合MQ消息中间件实现的可靠消息最终一致性
二、TCC补偿性事务解决方案
三、最大努力通知型方案
第一种方案:可靠消息最终一致性,需要业务系统结合MQ消息中间件实现,在实现过程中需要保证消息的成功发送及成功消费。即需要通过业务系统控制MQ的消息状态
第二种方案:TCC补偿性,分为三个阶段TRYING-CONFIRMING-CANCELING。每个阶段做不同的处理。
TRYING阶段主要是对业务系统进行检测及资源预留
CONFIRMING阶段是做业务提交,通过TRYING阶段执行成功后,再执行该阶段。默认如果TRYING阶段执行成功,CONFIRMING就一定能成功。
CANCELING阶段是回对业务做回滚,在TRYING阶段中,如果存在分支事务TRYING失败,则需要调用CANCELING将已预留的资源进行释放。
第三种方案:最大努力通知xing型,这种方案主要用在与第三方系统通讯时,比如:调用微信或支付宝支付后的支付结果通知。这种方案也是结合MQ进行实现,例如:通过MQ发送
-c

谁能帮帮忙,ActiveMQ jdbc master-slave mysql集群 怎么都能抢占锁当master呢


jdbc和连接池对于你这个场景来说,都足够,既然用spring管理了,建议还是使用连接池,另外,spring自身没有实现连接池,一般都是对第三方连接池的包装,常见的有C3P0,dbcp以及最近比较流行的boneCP等,这几个配置都差不多太多,以boneCP为例:
《bean id=“dataSource“ class=“com.jolbox.bonecp.BoneCPDataSource“
destroy-method=“close“》
《property name=“driverClass“ value=“${jdbc.driverClass}“ /》
《property name=“jdbcUrl“ value=“${jdbc.url}“ /》
《property name=“username“ value=“${jdbc.user}“ /》
《property name=“password“ value=“${jdbc.password}“ /》
《property name=“idleConnectionTestPeriod“ value=“60“ /》
《property name=“idleMaxAge“ value=“240“ /》
《property name=“maxConnectionsPerPartition“ value=“30“ /》
《property name=“minConnectionsPerPartition“ value=“10“ /》
《property name=“partitionCount“ value=“2“ /》
《property name=“acquireIncrement“ value=“5“ /》
《property name=“statementsCacheSize“ value=“100“ /》
《property name=“releaseHelperThreads“ value=“3“ /》
《/bean》
《bean id=“jdbcTemplate“ class=“org.springframework.jdbc.core.JdbcTemplate“》
《property name=“dataSource“ ref=“dataSource“ /》
《/bean》
-activemq集群

如何在linux上配置activemq集群


配置ActiveMQ的集群需要修改conf目录下的activemq.xml

具体信息

配置方式:Master-Slave方式

对于ActiveMQ有两种运行方式,一种是放入lib,和web应用一同启动,另外一种是作为单独的mq服务器运行,因为涉及了cluster,我们采用了单独运行的配置。

下载并解压后

我们进入activeMq目录。

进入%ActiveMQ%/bin

选择启动activemq.bat

如果启动过程中没有出现错误,我们就可以进行其他的配置。

配置文件的位置在%ActiveMQ%/conf中

编写测试程序:一个用来发送Message,一个用来接收Message

配置文件

修改conf目录下的activemq.xml文件

name=“host61616“ uri=“static://(tcp://192.168.180.69:61616,tcp://192.168.180.69:11616)“ /》

name=“host11616“ uri=“static://(tcp://192.168.180.69:61616,tcp://192.168.180.69:11616)“ /》

具体看http://embed.21ic.com/了解