gpt4 book ai didi

spring-4 - 使用 Spring 4 Websockets 声明和使用 RabbitMQ

转载 作者:行者123 更新时间:2023-12-01 08:59:17 26 4
gpt4 key购买 nike

在我们当前的应用程序中,我们以这种方式使用 Spring AMQP:

<rabbit:connection-factory  id="cachingConnectionFactory" 
username="${rabbitmq.connection.username}"
password="${rabbitmq.connection.password}"
host="${rabbitmq.connection.host}"
port="${rabbitmq.connection.port}"
executor="rabbitmqPoolTaskExecutor"
requested-heartbeat="${rabbitmq.connection.requested-heartbeat}"
channel-cache-size="${rabbitmq.connection.channel-cache-size}"
virtual-host="${rabbitmq.connection.virtual-host}" />

<rabbit:admin id="adminRabbit"
connection-factory="cachingConnectionFactory"
auto-startup="true" />

<rabbit:template id="rabbitTemplate"
connection-factory="cachingConnectionFactory"
exchange="v1.general.exchange"
message-converter="jsonMessageConverter"
encoding="${rabbitmq.template.encoding}"
channel-transacted="${rabbitmq.template.channel-transacted}" />

<rabbit:queue id="v1.queue.1" name="v1.queue.1" />
<rabbit:queue id="v1.queue.2" name="v1.queue.2" />
<rabbit:queue id="v1.queue.3" name="v1.queue.3" />

<fanout-exchange name="v1.general.exchange" xmlns="http://www.springframework.org/schema/rabbit" >
<bindings>
<binding queue="v1.queue.1" />
<binding queue="v1.queue.2" />
<binding queue="v1.queue.3" />
</bindings>
</fanout-exchange>

<listener-container xmlns="http://www.springframework.org/schema/rabbit"
connection-factory="cachingConnectionFactory"
message-converter="jsonMessageConverter"
task-executor="rabbitmqPoolTaskExecutor"
auto-startup="${rabbitmq.listener-container.auto-startup}"
concurrency="${rabbitmq.listener-container.concurrency}"
channel-transacted="${rabbitmq.listener-container.channel-transacted}"
prefetch="${rabbitmq.listener-container.prefetch}"
transaction-size="${rabbitmq.listener-container.transaction-size}" >

<listener id="v1.listener.queue.1" ref="listener1" method="handleMessage" queues="v1.queue.1" />
<listener id="v1.listener.queue.2" ref="listener2" method="handleMessage" queues="v1.queue.2" />
<listener id="v1.listener.queue.3" ref="listener3" method="handleMessage" queues="v1.queue.3" />

</listener-container>

<bean id="amqpServerConnection" class="com.sub1.sub2.RabbitGatewayConnectionImpl">
<property name="rabbitTemplate" ref="rabbitTemplate" />
</bean>

当我在基于 Spring 4 的新应用程序中配置 websocket 时,我不知道如何/在哪里声明交换、队列等...

registry.enableStompBrokerRelay("/example1/", "/example2/")
.setApplicationLogin("guest")
.setApplicationPasscode("guest")
.setAutoStartup(true)
.setRelayHost("localhost")
.setRelayPort(5672)
.setSystemHeartbeatReceiveInterval(10000)
.setSystemHeartbeatSendInterval(10000);

这东西必须用 AMPQ 实现了吗?

最佳答案

基本上客户端建立一个 WebSocket session 并使用 STOMP 进行消息传递(STOMP over WebSocket),而不是 AMQP。在 STOMP 中,一切都由目标 header 驱动,由消息代理来定义它的含义。例如,检查 RabbitMQ STOMP plugin页面以查看 Rabbit 如何将 STOMP 目的地映射到队列和交换。

因此,如果您将 RabbitMQ 视为您已经管理队列、交换等的消息代理。在 Web 应用程序端,消息传递协议(protocol)是 STOMP,客户端可以将消息发送到映射到 @MessageMapping< 的 STOMP 目标 Controller 方法或 RabbitMQ 支持的目的地。此外, Controller 或注入(inject) SimpMessagingTemplate 的任何其他组件可以将消息发送到代理(Rabbit),然后将广播到连接的 Web 客户端。

希望这会有所帮助。

关于spring-4 - 使用 Spring 4 Websockets 声明和使用 RabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com