@BangIndia Ответов: 1

Потребитель Rabbitmq для персистентного сообщения


Привет,

Я объявил очередь со следующими параметрами.
channel.exchangeDeclare(EXCHANGE_NAME, ExchangeType.DIRECT.getExchangeName(), true);

Map<String, Object> args = new HashMap<String, Object>();
args.put("x-queue-mode", "lazy");

// First Queue
channel.queueDeclare(QUEUE_NAME_1, false, true, false, args);
channel.queueBind(QUEUE_NAME_1, EXCHANGE_NAME, ROUTING_KEY_1);

При отправке данных :
channel.basicPublish(DirectExchange.EXCHANGE_NAME, DirectExchange.ROUTING_KEY_1, MessageProperties.PERSISTENT_TEXT_PLAIN, MESSAGE_1.getBytes());

Его правильное хранение на локальном диске, а также его удержание после перезагрузки сервера также.

Но когда я запускаю своего потребителя, он не потребляет данные, доступные внутри очереди настройки.

Следующий код я использую для потребителя:
Connection conn = RabbitMQConnection.getConnection();
if (conn != null)
{
Channel channel = conn.createChannel();
// Consumer reading from queue 1
Consumer consumer1 = new DefaultConsumer(channel)
{
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException
    {
	String message = new String(body, "UTF-8");
	System.out.println(" Message Received Queue 1 '" + message + "'");
    }
};
channel.basicConsume(DirectExchange.QUEUE_NAME_1, false, consumer1);

Пожалуйста, помогите мне в этом, чтобы решить эту проблему.

Спасибо,

Что я уже пробовал:

Я пробовал с вышеуказанным потребителем. Но это не работает.

1 Ответов

Рейтинг:
11

@BangIndia

Согласно коду, очередь была сделана как эксклюзивная очередь, поэтому вам нужно использовать одно и то же соединение с потребителем.

Для этого вам нужно использовать прочную очередь .