我是RabbitMQ的新手。
我实现了websocket服务器,tyrus
以获取实时消息,如Push Server,带有RabbitMQ essentials一书。
但是,当我断开连接并重新连接时,服务器会发送所有消息,因为我是这样实现的。
consumer = new DefaultConsumer(channel)
{
@Override
public void handleDelivery(final String consumerTag,
final Envelope envelope,
final BasicProperties properties,
final byte[] body) throws IOException
{
handler.handleDelivery(channel, envelope, properties, body);
}
};
因此,我想在用户请求时(例如滚动)获得20条最新消息,但是,老实说,我无法想象如何实现它。
我想实现这些东西。
当用户连接到websocket服务器时,服务器将发送最新的20条消息。
当用户打开收件箱布局并到达滚动底部时,服务器将发送下20条消息。
连接后该用户的新消息,然后服务器实时发送。
您需要使用预取计数来限制在使用者启动时使用未经确认的消息。
您可以在频道上使用basicQos方法。从RabbitMQ文档:
Channel channel = ...;
Consumer consumer = ...;
channel.basicQos(20); // Per consumer limit
channel.basicConsume("my-queue", false, consumer);
有关更多详细信息,请参阅RabbitMQ文档:http : //www.rabbitmq.com/consumer-prefetch.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句