Rabbbitmq xml配置
我试图理解RabbitMQ-Spring AMQP代码。在XML文件中配置RabbitMQ的情况下,我没有什么疑问 xml的发送方部分如下所示-Rabbbitmq xml配置,xml,spring-rabbit,Xml,Spring Rabbit,我试图理解RabbitMQ-Spring AMQP代码。在XML文件中配置RabbitMQ的情况下,我没有什么疑问 xml的发送方部分如下所示- <?xml version="1.0" encoding="utf-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rab
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
<rabbit:connection-factory id="connectionFactory"
host="localhost" username="guest" password="guest"/>
<rabbit:admin connection-factory="connectionFactory"/>
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
exchange="tpExchange"/>
</beans>
public class SpringAMQPRabbitSender {
private final static String SENDER_XML = "springamqp-rabbit-sender- context.xml";
public static void main(String[] args) throws Exception {
AmqpTemplate amqpTemplate = (AmqpTemplate)(new ClassPathXmlApplicationContext(SENDER_XML)).getBean("amqpTemplate");
int messagCount = 0;
while (messagCount < 10){
amqpTemplate.convertAndSend("tp.routingkey.1", "Message # " + messagCount++);
}
System.out.println( messagCount + " message(s) sent successfully.");
}
发送方代码如下所示-
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
<rabbit:connection-factory id="connectionFactory"
host="localhost" username="guest" password="guest"/>
<rabbit:admin connection-factory="connectionFactory"/>
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
exchange="tpExchange"/>
</beans>
public class SpringAMQPRabbitSender {
private final static String SENDER_XML = "springamqp-rabbit-sender- context.xml";
public static void main(String[] args) throws Exception {
AmqpTemplate amqpTemplate = (AmqpTemplate)(new ClassPathXmlApplicationContext(SENDER_XML)).getBean("amqpTemplate");
int messagCount = 0;
while (messagCount < 10){
amqpTemplate.convertAndSend("tp.routingkey.1", "Message # " + messagCount++);
}
System.out.println( messagCount + " message(s) sent successfully.");
}
公共类SpringAMQPRabbitSender{
私有最终静态字符串SENDER_XML=“springamqp rabbit SENDER-context.XML”;
公共静态void main(字符串[]args)引发异常{
AmqpTemplate AmqpTemplate=(AmqpTemplate)(新类路径XmlApplicationContext(发送方XML)).getBean(“AmqpTemplate”);
int messagCount=0;
而(MessaCount<10){
amqpTemplate.convertAndSend(“tp.routingkey.1”、“Message#“+messagCount++”);
}
System.out.println(MessaCount+“已成功发送消息”);
}
接收方xml部分如图所示
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
<rabbit:connection-factory id="connectionFactory" host="localhost"
username="guest" password="guest"/>
<rabbit:admin connection-factory="connectionFactory"/>
<rabbit:queue id ="tpQueue"/>
<rabbit:topic-exchange id="tpExchange" name="tpExchange">
<rabbit:bindings>
<rabbit:binding queue="tpQueue" pattern="tp.routingkey.1">
</rabbit:binding>
</rabbit:bindings>
</rabbit:topic-exchange>
<bean id="asyncListener" class="com.tp.spring_amqp_rabbitmq.SpringAMQPRabbitAyncListener"/>
<rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory">
<rabbit:listener ref="asyncListener" queue-names="tpQueue"/>
</rabbit:listener-container>
</beans>
发件人代码中convertAndSend()的参数给出了发件人使用的路由密钥和要发送的邮件。但它要发送到哪个交易所??
我的疑问是:
元素中,需要的是exchange名称,而不是id
元素中,必须使用队列
属性而不是队列名称
属性来引用此类队列。如果要使用队列名称
属性,必须为队列指定名称
请参阅XSD文档。有人能帮我理解这一点吗?非常感谢。这对我帮助很大:)但我遇到了一些代码,它们在侦听器中使用“队列”,但它指的是队列名称,因为标记没有id。例如:这是正确的方法吗,即使用“队列”在侦听器中,包含队列名称作为其属性值