rabbitmq / rabbitmq-server

Open source RabbitMQ: core server and tier 1 (built-in) plugins
https://www.rabbitmq.com/
Other
12.04k stars 3.9k forks source link

Support for the amqp:modified:list outcome #2595

Closed 4integration closed 1 year ago

4integration commented 7 years ago

As been discussed on RabbitMQ mailing list - it is not possible to use Qpid JMS v0.23 (AMQP v1.0) with RabbitMQ due to non support for modified outcomes. Discussion: https://groups.google.com/forum/#!topic/rabbitmq-users/_6bD9bQDlZ0

No error in test application but hangs on: MessageProducer sender = session.createProducer(queue);

Error message:

=INFO REPORT==== 2-Aug-2017::13:24:16 ===
accepting AMQP connection <0.2055.0> (10.0.2.2:57459 -> 172.17.0.2:5672)

=WARNING REPORT==== 2-Aug-2017::13:24:16 ===
Closing session for connection <0.2055.0>:
{'v1_0.error',{symbol,<<"amqp:not-implemented">>},
              {utf8,<<"Outcomes not supported: [{symbol,<<\"amqp:modified:list\">>}]">>},
              undefined}

=WARNING REPORT==== 2-Aug-2017::13:24:27 ===
closing AMQP connection <0.2055.0> (10.0.2.2:57459 -> 172.17.0.2:5672):
client unexpectedly closed TCP connection

Full test application:

package com.myself.test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.qpid.jms.JmsConnectionFactory;

public class AmqpJmsSenderApp {

    public static void main(String[] args) throws Exception {
        Connection connection = null;
        ConnectionFactory connectionFactory = new JmsConnectionFactory("amqp://localhost:30000");

        try {

            // Step 1. Create an amqp qpid 1.0 connection
            connection = connectionFactory.createConnection("admin", "pass");

            // Step 2. Create a session
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            // Step 3. Create a sender
            Queue queue = session.createQueue("/amq/queue/CRM.TEST.QUEUE");
            MessageProducer sender = session.createProducer(queue);

            // Step 4. send a few simple message
            sender.send(session.createTextMessage("Hello world "));

            connection.start();

            // Step 5. create a moving receiver, this means the message will be
            // removed from the queue
            MessageConsumer consumer = session.createConsumer(queue);

            // Step 7. receive the simple message
            TextMessage m = (TextMessage) consumer.receive(5000);
            System.out.println("message = " + m.getText());

        } finally {
            if (connection != null) {
                connection.close();
            }
        }
    }
}

It have also been discussed in Qpid mailinglist http://qpid.2158936.n2.nabble.com/Create-durable-subscription-to-Azure-Service-Bus-tp7665461p7665618.html

Where a post was made with:

Per the issue description I think the broker is being overly aggressive in this case, as it isn't reacting to clients actually using the outcome but rather that the client mention supporting it at all. It could either support it or just be nicer about not supporting it.

Ref: https://github.com/rabbitmq/rabbitmq-amqp1.0/issues/34

4integration commented 7 years ago

For info: This is highly important since Qpid JMS is one of the major Java API for AMQP v1.0

I also propose that Qpid JMS client is added to the test suite. https://github.com/rabbitmq/rabbitmq-amqp1.0#clients-we-have-tested

mgfeller commented 6 years ago

We experience the same issue and observe the same behavior. For various reasons, the project I'm currently working for is standardizing on AMQP 1.0. We have decided to add RabbitMQ to an existing messaging infrastructure; RabbitMQ has a high reputation and is a great product. We would really appreciate to see improved interoperability between Qpid and RabbitMQ. Unfortunately, I have no experience with Erlang, and no detailed understanding of AMQP 1.0, which makes it difficult to contribute.

kjnilsson commented 1 year ago

This was done in d5cd97784bd3faa7e61d1a242e6c75b4aa90f553