Certainly, would have made more sense.<br><br>Currently, in JMS you define interfaces like this to map routes - equivalent to a CDI Event Bridge - to JMS Destinations (Queues and Topics):<br><br>public interfaces MyMappingInterface{<br>
@Inbound<br>public void handleStrings(@Observes String s, @JmsDestination("jms/MyTopic") Topic topic);<br>@Outbound<br>public void handleLongs(@Observes Long l, @JmsDestination("jms/MyQueue") Queue queue);<br>
}<br><br>This says that a listener will be created for the topic jms/MyTopic and any TextMessage or ObjectMessage with payload type String.class will be forwarded to an observer method defined like this:<br><br>public void observeStrings(@Observes @Inbound String s) {<br>
<br>}<br><br>Likewise, the second line in the interface says that Events of type Long that are fired with the @Outbound qualifier will be sent to a Queue jms/MyQueue,<br><br>@Inject @Outbound Event<Long> longEvent;<br>
<br>Results in Seam JMS dynamically generating an observer method on deployment that handles and forwards the long fired.<br><br>What I'm proposing is that we do away with (not literally, I would keep it in) the interface.� Instead, we look at the events injected and the observers defined.� The same observer method would be defined like this:<br>
<br>@JMS("jms/MyTopic")<br>public void observeStrings(@Observes @Inbound String s) {<br>}<br><br>And the injected event:<br><br>@Inject @JMS("jms/MyQueue") @Outbound Event<Long> longEvent;<br><br>
Does that make sense?<br><br>John<br><br><br><div class="gmail_quote">On Thu, Jun 2, 2011 at 7:49 AM, Pete Muir <span dir="ltr"><<a href="mailto:pmuir@redhat.com">pmuir@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5"><br>
On 2 Jun 2011, at 02:29, John D. Ament wrote:<br>
<br>
> Something I've been thinking about for a while now is the mapping APIs used by Seam JMS. �Currently, you write an interface to define routes used by JMS events. �This requires a bit of extra code that I'm not a big fan of. �What I was thinking was put an extra annotation on either the injection point of the event or the observer method. �The idea is that the annotation would include all of the destination configuration necessary. �For example:<br>
><br>
> @Inject @JMS("jms/QueueOne","jms/QueueTwo","jms/QueueThree") Event<MyType> myTypeEvent;<br>
><br>
> @JMS("jms/MyTopic")<br>
> public void handleMessages(@Observes Long longsInTopic) {<br>
><br>
> ....<br>
><br>
> }<br>
><br>
> The issues I see, since essentially I have to create an extra observer/firing pair to support each of these, is how to determine the observed type in the event. �In general, any thoughts? Is it possible to determine the event's type in this case? If so, does the approach make sense?<br>
<br>
</div></div>Can you show what this replaces? I.e. before and after?</blockquote></div><br>