java - Spring 集成 pubsub 与 Spring amqp RabbitMQ pubsub

标签 java spring rabbitmq spring-integration spring-amqp

我正在开发微博 spring mvc hibernate 应用程序。我需要实现像推特这样的发布订阅功能。

我正在使用 RabbitMQ 通过 Spring AMQP 抽象进行消息传递。

我在网络上到处看到 pubsub examples给出涉及

Spring Integration

Spring AMQP & RabbitMQ

我对 Spring-Integration 进行了更多研究,发现即使不使用 RabbitMQ 也可以使用它实现发布订阅。

现在我的问题是

为什么我需要将 Spring Integration 与 [Spring AMQP & RabbitMQ] 结合使用来实现 pubsub 功能。为什么我不能只使用 Spring AMQP 和 Rabbit 来做到这一点?

Spring 集成是否提供任何附加功能?

我的 Spring AMQP 和 RabbitMQ 配置

<rabbit:connection-factory id="connectionFactory" virtual-host="/" host="localhost" 
username="guest" password="guest"/>

<rabbit:admin connection-factory="connectionFactory" />

<rabbit:queue name="UserPostpublishQueue" />

<fanout-exchange name="broadcastUserPosts" xmlns="http://www.springframework.org/schema/rabbit">
    <bindings>
        <binding queue="UserPostpublishQueue"/>
    </bindings>
</fanout-exchange>

<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="broadcastUserPosts" 
queue="UserPostpublishQueue"/>

</beans>

在我的 Controller 中测试代码

@Autowire
private AmqpTemplate amqpTemplate;

try{
        amqpTemplate.convertAndSend(post);
        Post receivedPost = (Post)amqpTemplate.receiveAndConvert();
        System.out.println("received Post "+receivedPost);
        }catch(AmqpException e){
            //deal with exception
        }

最佳答案

Spring Integration 实现了 http://www.enterpriseintegrationpatterns.com/books1.html 中的模式同时使用 AMQP/RabbitMQ 作为其众多传输之一。

我知道 spring-amqp 更多的是 AMQP 客户端功能。如果你不想使用 Spring 。然后我们有一个普通的 Java 客户端:https://www.rabbitmq.com/java-client.html

关于java - Spring 集成 pubsub 与 Spring amqp RabbitMQ pubsub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32795977/

相关文章:

c# - 如何暂时停止交换/队列接收消息?

java - JVM 是否可以选择自动加密其内存?

java - 不幸的是我的 map 已经停止工作。安卓

Java JTable 检测用户调整大小的列

ruby-on-rails - 我可以在带有 AMQP 的 Rails 3 中使用请求/回复 - RPC 模式吗?

python - 使用 concurrent.futures 一次消耗许多出队消息

java - Controller 中的 Spring Autowired 不起作用

java - Spring & JDBC 事务 : How to ensure isolation level SERIALIZABLE in a DAO object?

spring - 使用 spring 批处理仅从 csv 文件中读取选择性列

java - IntelliJ 运行/调试配置 - 启动序列之前 : Starting with Tomcat Server doesn't progress