java mq 配置方式

最近用到mq,需要配置一些参数,开始时xml配置方式的,用的jar包是spring-rabbit 1.4.5.RELEASE,配置文件如下:

	<bean id="pushHandler" class="具体实现类路径/com.test"/>
	<!-- 声明Queue并设定Queue的名称 -->
	<bean id="devicePropertyQueue" class="org.springframework.amqp.core.Queue">
		<constructor-arg name="name" value="devicePropertyQueue" />
		<constructor-arg name="durable" value="true" />
		<constructor-arg name="exclusive" value="false" />
		<constructor-arg name="autoDelete" value="false" />
	</bean>
	
	<!-- 声明Exchange的类型为direct并设定Exchange的名称 -->
	<bean id="deviceProperty.direct" class="org.springframework.amqp.core.DirectExchange">
		<constructor-arg value="deviceProperty.direct"></constructor-arg>
	</bean>
	
	<!-- Topic类型交换机通过模式匹配分配消息的routing-key属性。将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。 它将routing-key和binding-key的字符串切分成单词。这些单词之间用点隔开。它同样也会识别两个通配符:符号“#”和符号“*”。 
		#匹配0个或多个单词,*匹配不多不少一个单词。 例如,binding key:*.stock.#匹配routing key: usd.stock和eur.stock.db,但是不匹配stock.nana。 
		例如,“audit.#”能够匹配到“audit.irs.corporate”,但是“audit.*”只会匹配到“audit.irs”。 如果没有队列绑定在交换机上,则发送到该交换机上的消息会丢失。 
		一个交换机可以绑定多个队列,一个队列可以被多个交换机绑定。 持久性:如果启用,交换机将会在server重启前都有效。 自动删除:如果启用,那么交换机将会在其绑定的队列都被删掉之后删除自身。 
		惰性:如果没有声明交换机,那么在执行到使用的时候会导致异常,并不会主动声明。 -->
	<!-- 通过Binding来判定Queue、Exchange、routingKey -->
	<!-- 其中构建Binding的参数1是Queue,参数2是Exchange,参数3是routingKey -->
	<bean id="devicePropertyQueueBind" class="org.springframework.amqp.core.Binding">
		<constructor-arg name="destination" value="devicePropertyQueue" />
		<constructor-arg name="destinationType" value="QUEUE" />
		<constructor-arg name="exchange" value="deviceProperty.direct" />
		<constructor-arg name="routingKey" value="push_device_property" />
		<constructor-arg name="arguments">
			<null />
		</constructor-arg>
	</bean>

	<!-- 用于消息的监听的代理类MessageListenerAdapter -->
	<bean id="myDevicePropertyListenerAdapter"
		class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">
		<constructor-arg ref="pushHandler" />
		<property name="defaultListenerMethod" value="handleMessage"></property>
		<property name="messageConverter" ref="messageConverter"></property>
	</bean>
	<!-- 用于消息的监听的容器类SimpleMessageListenerContainer,对于queueName的值一定要与定义的Queue的值相同 -->
	<bean id="devicePropertyListenerContainer"
		class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
		<property name="queueNames">
			<array>
				<value>devicePropertyQueue</value>
			</array>
		</property>
		<property name="connectionFactory" ref="connectionFactory"></property>
		<property name="messageListener" ref="myDevicePropertyListenerAdapter"></property>
		<property name="concurrentConsumers" value="50"></property>
		<property name="prefetchCount" value="200"></property>
	</bean>

感觉方式太low了,xml文件就是繁琐,后面改了一下,用spring-rabbit 2.0.5.RELEASE以上的版本,配置方式

配置文件如下:

mq.queue = push_device_property1
mq.exchange = deviceProperty.direct1
mq.routingkey = push_device_property1
mq.durable = true
mq.exclusive = false
mq.autoDelete = false

java里面配置如下:

    @RabbitListener(bindings = {
            @QueueBinding(value = @Queue(value = "${mq.queue}", durable = "${mq.durable}", autoDelete = "${mq.autoDelete}", exclusive = "${mq.exclusive}"),
                    exchange = @Exchange(name = "${mq.exchange}"), key = "${mq.routingkey}")})
    @RabbitHandler

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值