标签:消费 负载 file 功能 over dde ddr star 接收
一、在一台服务器上启动多个Broker二、ActiveMQ的静态网络链接
<networkConnectors>
<networkConnector name="local network" uri="static://(tcp://remotehost1:61616,tcp://remotehost2:61616)"/>
</networkConnectors>
<dynamicallyIncludedDestinations>
<queue physicalName="include.test.foo"/>
<topic physicalName="include.test.bar"/>
</dynamicallyIncludedDestinations>
9、staticallyIncludedDestinations:默认为空,要包括的静态消息地址。类似于excludedDestinations,如:
<staticallyIncludedDestinations>
<queue physicalName="always.include.queue"/>
</staticallyIncludedDestinations>
10、excludedDestinations:默认为空,指定排除的地址,示例如下:
11、duplex:默认false,设置是否能双向通信
12、prefetchSize:默认是1000,持有的未确认的最大消息数量,必须大于0,因为网络消费者不能自己轮询消息
13、suppressDuplicateQueueSubscriptions:默认false,如果为true,重复的订阅关系一产生即被阻止
14、bridgeTempDestinations:默认true,是否广播advisory messages来创建临时destination
15、alwaysSyncSend:默认false,如果为true,非持久化消息也将使用request/reply方式代替oneway方式发送到远程broker
16、staticBridge:默认false,如果为true,只有staticallyIncludedDestinations中配置的destination可以被处理
三、“丢失”的消息
存在这样的场景,broker1和broker2通过networkConnector连接,一些consumers连接到broker1,消费broker2上的消息。消息先被broker1从broke2上消费掉,然后转发给这些consumers。不幸的是转发部分消息的时候broker1重启了,这些consumers发现broker1连接失败,通过failover连接到broker2上去了,但是又一部分他们还没有消费的消息被broker2已经分发到broker1上去了。这些消息,就好像是消失了,除非有消费者重新连接到broker1上来消费。
从5.6版起,在destinationPolicy上新增的选项replayWhenNoConsumers。这个选项使得broker1上有需要转发的消息但是没有消费者时,把消息回流到它原始的broker。同时把enableAudit设置为false,为了防止消息回流后被当做重复消息而不被分发,示例如下:
<destinationPolicy>
<policyMap>
<policyEntry queue=">" enableAudit="false">
<networkBridgeFilterFactory>
<conditionalNetworkBridgeFilterFactory replayWhenNoConsumers="true"/>
</networkBridgeFilterFactory>
</policyEntry>
</policyMap>
</destinationPolicy>
四、容错的连接
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory ("failover:(tcp://localhost:61616,tcp://localhost:61617)
?randomize=false");
五、动态网络连接(纯理论)
多播协议multicast
ActiveMQ使用Multicast协议将一个Service和其他的Broker的Service连接起来。IP multicast是一个被用于网络中传输数据到其他一组接收者的技术。
IP multicast传统的概念成为组地址。组地址是ip地址在224.0.0.0到239.255.255.255之间的ip地址。ActiveMQ broker使用multicast协议去建立服务与远程的broker的服务的网络连接。
基本的格式配置
multicast://ip address:port?transportOptions
1、group:表示唯一的组名称,缺省值default
2、minmumWireFormatVersion:被允许的最小的wireformat版本,缺省为0
3、trace:是否追踪记录日志,默认false
4、useLocalHost:表示本地机器的名称是否为localhost,默认true
5、datagramSize:特定的数据大小,默认值41024
6、timeToLive:消息的声明周期值,默认值-1
7、loopBackMode:是否启用loopback模式,默认false
8、wireFormat:默认用wireFormat命名
9、wireFormat.:前缀是wireFormat
配置示例
1:默认配置,默认情况下是不可靠的多播,数据包可能会丢失
multicast://default
2:特定的ip和端口
multicast://224.1.2.3:6255
3:特定的ip和端口以及组名
multicast://224.1.2.3:6255?group=mygroupname
ActiveMQ使用multicast协议的配置格式如下:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="multicast" dataDirectory="${activemq.data}/data">
<networkConnectors>
<networkConnector name="default-nc" uri="multicast://default"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
</transportConnectors>
</broker>
说明:
1:uri="multicast://default"中的default是activemq默认的ip,默认动态 的寻找地址
2:"discoveryUri"是指在transport中用multicast的default的地址传递
3:"uri"指动态寻找可利用的地址
4:如果防止自动的寻找地址?
(1)名称为openwire的transport,移除discoveryUri="multicast:
//default"即可。传输连接用默认的名称openwire来配置broker的tcp多点连接,这将允许其他broker能够自动发现和连接到可用的broker中。
(2)名称为"default-nc"的networkConnector,注释掉或者删除即可。
ActiveMQ默认的networkConnector基于multicast协议的连接的默认名称是default-nc,而且自动的去发现其他broker。去停止这种行为,只需要注销或者删除掉default-nc网络连接。
(3)使brokerName的名字唯一,可以唯一识别Broker的实例,默认是localhost
Discovery协议
Discovery是在multicast协议的功能上定义的。功能类似与Failover功能。它将动态的发现multicast协议的broker的连接并且随机的连接其中一个broker。
<broker name="foo">
<transportConnectors>
<transportConnector uri="tcp://localhost:0" discoveryUri="multicast://default"/>
</transportConnectors>
</broker>
Peer协议
ActiveMQ提供了peer transport connector提供了更加容易的去嵌入broker网络中。它创建一个优于vm连接的p2p网络连接。默认格式如下:
peer://peergroup/brokerName?Key=value
Peer协议的基本使用
当我们启用了peer协议时,应用将自动的启动内嵌broker,也将会自动的去配置其它broker来建立连接,前提是必须要有一个组。配置如下:
peer://groupa/broker1?Persistent=false
另外,生产者和消费者都各自连接到嵌入到自己应用的broker,并且在本地的同一个组名中相互访问数据。
Fanout协议是同时连接到多个broker,默认的格式如下:
fanout:(fanoutURI)?key=value
示例:fanout:(static:(tcp://host1:61616,tcp://host2:61616))
表示client将试图连接到两个static列表中定义的三个URI
标签:消费 负载 file 功能 over dde ddr star 接收
原文地址:https://blog.51cto.com/mazongfei/2415600