activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <jira+amq...@apache.org>
Subject [jira] [Commented] (AMQNET-470) Allow Setting Callback after sending command asynchronously via Transport.
Date Fri, 07 Feb 2014 15:09:22 GMT

    [ https://issues.apache.org/jira/browse/AMQNET-470?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13894611#comment-13894611
] 

Timothy Bish commented on AMQNET-470:
-------------------------------------

We'd have to think about what's the best way to implement it.  I the Java and C++ client the
async send takes instance of an object that defines two methods which looks something like:

{code}
public interface AsyncCallback {

    void onSuccess();

    void onException(JMSException ex);
}
{code}

This allows for notification of either a send completion or a failure in one.  If we use delegate
we either need to decide on a signature that allows for optional error indicators or we use
two delegates, one for success and one for failure which is kind of ugly.  This is one area
where I prefer the object oriented approach but since it's C# I'm sure people will want to
by more dot-nety.  

> Allow Setting Callback after sending command asynchronously via Transport.
> --------------------------------------------------------------------------
>
>                 Key: AMQNET-470
>                 URL: https://issues.apache.org/jira/browse/AMQNET-470
>             Project: ActiveMQ .Net
>          Issue Type: New Feature
>          Components: NMS
>            Reporter: Shani Elharrar
>            Assignee: Jim Gomes
>            Priority: Minor
>              Labels: easyfix, features, newbie
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Hi.
> I have a "system" that processes a lot of messages (~3000 per second) asynchronously.
I'm trying to move to ActiveMQ as the primary message broker. 
> My configuration is that I consume messages from ActiveMQ queue (Using individual Acks),
I do some processing, And then send them to another queue (In the ActiveMQ). Transactions
aren't so Important to me since I can handle message duplicates in case of crash. But I do
want to Ack the messages only after I send them to the ActiveMQ. 
> So I want to have a Callback after sending the message Asynchronously to ActiveMQ.
> I managed to edit NMS code to support this, What i've done is :
> * Added "Callbackable" interface with one property (setter & getter) which is a delegate
equivalent to Action (void, empty arguments).
> * Modified Command and IActiveMQMessage to "extend" that interface
> * Modified CommandBase to implement the interface (Trivial setter/getter)
> * Modified TCPTransport.Oneway method to check if the callback isn't null and if not
- invoke it (After it marshals the message).
> And it worked flawlessly.
> First of all, I need you to vote in/against the feature, And if it's accepted - I'm willing
to create a patch for this.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Mime
View raw message