[
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)