Service-Oriented Architecture Attributes Progress Report 3
This progress report has been significantly delayed – mainly because I have been interested in something else – but also since checking out some of the restructured attributes and added topic delivery methods was more challenging then expected. Particularly when the topic had to be delivered to a component of a remote application.
One change was to treat Content Filtered topics similarly to Request/Response topics. This made both methods of message exchange examples of the previous N-to-One delivery category.
I hadn’t thought of Content Filtered as really N-to-One, thinking that multiple consumers could answer requests. But I found this a problem when I went to implement the second instance of the topic since I didn’t have a mechanism to send the request to multiple consumers. So I cloned the Content Filtered topic as a second such topic so the remote consumer component could treat a different topic.
If I am to have multiple consumers to send responses to the multiple requesting components for a particular filter condition, then I need to have a different way of treating this. And would might be the consequences if more than one component detected that the filter conditions were satisfied so that the requesting component got multiple responses.
This message exchange would be M-to-N. That is, a variety of both One-of-N and N-to-One where instead of the delivery identifier of One-of-N selecting which of the N consumers was to receive the message, the request message would be sent to each consumer. That consumer would then need to decide if it could respond to one or more of the filter conditions and save those in its filter table. Then when the conditions were satisfied, send its response to each of the requestors that ask for a response under those conditions. It would be sending a One-to-One Point-to-Point response multiple times.
This would be a whole different ballgame from what I have had. So, for now at least, Content Filtered is an example of N-to-One in that there is one consumer of the request. And, instead of sending an immediate, synchronous response to the particular requestor, it sends the delayed asynchronous response to all the components that requested a response when the particular filter conditions were satisfied.
This was implemented and checked out with both locally delivered messages within a particular application and remotely delivered to components of another application for message exchange of No Exchange (broadcast to be delivered to any subscriber), Delivery Identifier (One-of-N), Request/Response and Content Filtered (both examples of N requestors to One consumer/responder).
No comments:
Post a Comment