Dear Fraser,

I need to configure the auto-delete arguments, with this parameter:
arguments:{'qpid.auto_delete_timeout':120}
When I create the queue, the logs show a empty field argument.

Log:
main 2011-12-06 15:45:54,562 DEBUG [apache.qpid.transport.Connection] SEND:
[conn:db23f1] ch=0 id=2 QueueDeclare(queue=10.2.60.69-1671711,
alternateExchange=, autoDelete=true, arguments={})


Thanks you for your help,



2011/12/6 Fraser Adams <fraser.ad...@blueyonder.co.uk>

> Here's some Java code for method invocation. This largely follows a
> similar pattern to Pavel's C++ example. Note that this method is taken from
> a much larger QMF2 API that I've written ,so there's some dependencies on
> other classes (you won't be able to use it directly, but hopefully you'll
> get the idea especially with Pavel's code - you shouldn't need to tweak
> much MethodResult really just wraps a Map - see the QMF2 API
> specification). My QMF2 API stuff is actually finished, I've been promising
> to release it for weeks, but I've been writing a number of tools and
> utilities to demo it so I thought it'd be best to hold off until those are
> done.
>
>   /**
>    * Invoke the named method on the named Agent.
>    *
>    * @param agent the Agent to invoke the method on.
>    * @param content an unordered set of key/value pairs comprising the
> method arguments.
>    * @param replyHandle the correlation handle used to tie asynchronous
> method requests with responses
>    * @param timeout the time to wait for a reply from the Agent, a value
> of -1 means use the default timeout
>    * @return the method response Arguments in Map form
>    */
>   public MethodResult invokeMethod(final Agent agent, final Map<String,
> Object> content,
>                                    final String replyHandle, int timeout)
> throws QmfException
>   {
>       if (!agent.isActive())
>       {
>           throw new QmfException("Called invokeMethod() with inactive
> agent");
>       }
>       String agentName = agent.getName();
>       timeout = (timeout < 1) ? _replyTimeout : timeout;
>       try
>       {
>           Destination destination = (replyHandle == null) ? _replyAddress
> : _asyncReplyAddress;
>           MapMessage request = _syncSession.createMapMessage(**);
>           request.setJMSReplyTo(**destination);
>           request.setJMSCorrelationID(**replyHandle);
>           request.setStringProperty("x-**amqp-0-10.app-id", "qmf2");
>           request.setStringProperty("**method", "request");
>           request.setStringProperty("**qmf.opcode", "_method_request");
>           request.setStringProperty("**qpid.subject", agentName);
>
>           for (Map.Entry<String, Object> entry : content.entrySet())
>           {
>               request.setObject(entry.**getKey(), entry.getValue());
>           }
>
>           // Wrap request & response in synchronized block in case any
> other threads invoke a request
>           // it would be somewhat unfortunate if their response got
> interleaved with ours!!
>           synchronized(this)
>           {
>               _requester.send(request);
>               if (replyHandle == null)
>               { // If this is a synchronous request get the response
>                   Message response = _responder.receive(timeout***1000);
>                   if (response == null)
>                   {
>                       log.info("No response received in invokeMethod()");
>                       throw new QmfException("No response received for
> Console.invokeMethod()");
>                   }
>                   MethodResult result = new MethodResult(AMQPMessage.**
> getMap(response));
>                   QmfException exception = result.getQmfException();
>                   if (exception != null)
>                   {
>                       throw exception;
>                   }
>                   return result;
>               }
>           }
>           // If this is an asynchronous request return without waiting for
> a response
>           return null;
>       }
>       catch (JMSException jmse)
>       {
>           log.info("JMSException {} caught in invokeMethod()",
> jmse.getMessage());
>           throw new QmfException(jmse.getMessage()**);
>
>       }
>   }
>
>
>
> Pavel Moravec wrote:
>
>> Hi Gastón,
>> you can use QMF method "delete" with parameters "type" ("queue" in our
>> case) and "name" (name of the queue).
>>
>> Here is the code snippet from C++ program I use:
>>
>>    Connection connection(url/*, connectionOptions*/);
>>    try {
>>        connection.open();
>>        Session session = connection.createSession();
>>        Sender sender = session.createSender("qmf.**
>> default.direct/broker");
>>        Address responseQueue("#reply-queue; {create:always,
>> node:{x-declare:{auto-delete:**true}}}");
>>        Receiver receiver = session.createReceiver(**responseQueue);
>>
>>        Message message;
>>        Variant::Map content;
>>        Variant::Map OID;
>>        Variant::Map arguments;
>>        OID["_object_name"] = "org.apache.qpid.broker:**
>> broker:amqp-broker";
>>        arguments["type"] = "queue";
>>        arguments["name"] = queue_name; // a string of the queue name
>>
>>        content["_object_id"] = OID;
>>        content["_method_name"] = "delete";
>>        content["_arguments"] = arguments;
>>
>>        encode(content, message);
>>        message.setReplyTo(**responseQueue);
>>        message.setProperty("x-amqp-0-**10.app-id", "qmf2");
>>        message.setProperty("qmf.**opcode", "_method_request");
>>
>>        sender.send(message, true);
>>
>>        /* check response if the queue was properly deleted */
>>        Message response;
>>        if (receiver.fetch(response,qpid:**:messaging::Duration(30000))
>> == true)
>>        {
>>                qpid::types::Variant::Map recv_props =
>> response.getProperties();
>>                if (recv_props["x-amqp-0-10.app-**id"] == "qmf2")
>>                        if (recv_props["qmf.opcode"] == "_method_response")
>>                                std::cout << "Response: OK" << std::endl;
>>                        else if (recv_props["qmf.opcode"] == "_exception")
>>                                std::cerr << "Error: " <<
>> response.getContent() << std::endl;
>>                        else
>>                                std::cerr << "Invalid response received!"
>> << std::endl;
>>                else
>>                        std::cerr << "Invalid response not of qmf2 type
>> received!" << std::endl;
>>        }
>>        else
>>                std::cout << "Timeout: No response received within 30
>> seconds!" << std::endl;
>>
>>        connection.close();
>>        return 0;
>>    } catch(const std::exception& error) {
>>        std::cout << error.what() << std::endl;
>>        connection.close();
>>    }
>>
>>
>>
>> Kind regards,
>> Pavel
>>
>> ----- Original Message -----
>>
>>
>>> From: "Gaston Quezada" <quezada.gas...@gmail.com>
>>> To: users@qpid.apache.org
>>> Sent: Monday, December 5, 2011 9:14:10 PM
>>> Subject: how to delete queue from jms client
>>>
>>> Hi,
>>>
>>> Im using qpid-client 0.12, and need delete queue from JMS client.
>>> the queue is not auto delete
>>>
>>> regards
>>>
>>> --
>>> Gastón Quezada
>>>
>>>
>>>
>>
>> ------------------------------**------------------------------**---------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: 
>> mailto:users-subscribe@qpid.**apache.org<users-subscr...@qpid.apache.org>
>>
>>
>>
>>
>
>
> ------------------------------**------------------------------**---------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: 
> mailto:users-subscribe@qpid.**apache.org<users-subscr...@qpid.apache.org>
>
>


-- 
Gastón Quezada

Reply via email to