ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » IBM MQ Java / JMS » Schedule the enquing of a messages using XMS

Post new topic  Reply to topic
 Schedule the enquing of a messages using XMS « View previous topic :: View next topic » 
Author Message
DaeMoohn
PostPosted: Mon Mar 11, 2013 8:27 am    Post subject: Schedule the enquing of a messages using XMS Reply with quote

Apprentice

Joined: 04 Jun 2010
Posts: 26

Hi there,

Is there an XMS equivalent of this functionality found in Azure ServiceBus? http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx

Typically, it is capable of enquing the sending of a message after a some time has elapsed, at a minimum.
Back to top
View user's profile Send private message
Vitor
PostPosted: Mon Mar 11, 2013 10:17 am    Post subject: Re: Schedule the enquing of a messages using XMS Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

DaeMoohn wrote:
Typically, it is capable of enquing the sending of a message after a some time has elapsed, at a minimum.


No, and why would you want to? What's the business requirement here?

See also here,here & here
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
DaeMoohn
PostPosted: Mon Mar 11, 2013 12:30 pm    Post subject: Reply with quote

Apprentice

Joined: 04 Jun 2010
Posts: 26

I'm not developing a real business application, i'm building some proof of concepts with what technology is available (IBM software is free of charge).

Anyway, i was looking at a particular scenario: buying tickets for an event; here, you might have an allowed delay of 15 minutes let's say between ticket reservation and ticket payment; after this period, if you haven't bought the tickets, reservation is canceled and you go back to square one.

An implementation using Azure Service Bus would post a reservation expiration message on the bus with a 15-20 minutes delay during which the application might receive the payment completion message; if the payment confirmation is received first, the state machine reaches a state in which expiration message would be harmful; doing things this way would free the developer of spawning a thread with delay, it could even handle scenarios where you could send a message after several days, weeks, etc.; so they say.

I understand that by not having this feature in WMQ one must time-wait manually. The issue is that my own implementation of this must be at the same level of reliability as one provided by a queuing infrastructure.
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Mon Mar 11, 2013 12:41 pm    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

Some possible answers to your prepositions:

1. solidDb or MbCache can be used to store your transaction. A Java timer event can be used to trigger a read of the message when its time to process it.

2. IBM software is not free. There are licenses. And these licenses require compliance.

3. Manual time-wait is not the only solution.

4. A true ESB is stateless. Forcing a stateless entity to track state is square peg in round hole.

5. You are really trying to make an ESB be a workload management solution, as in Business Process Management. WMB is not that. WMB is a high-speed transformation engine. Use BPM for what you are trying to do, not a transformation engine.

6. I realize you posted this in WMQ forum; however, you referenced Microsoft's ServiceBus which is more equivalent to WMB+WMQ than it is WMQ alone.

7. You should develop your requirements in an agnostic way, then choose a tool to meet that requirement. Trying to say ServiceBus does XYZ, how do I do this in WMQ/WMB is not a viable exercise.
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
Vitor
PostPosted: Mon Mar 11, 2013 12:54 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

DaeMoohn wrote:
(IBM software is free of charge).


I echo the comments of my associates, with particular reference to this comment. IBM's WMQ is not free, even if on your site there's no charge to your project. It's subject to a license typically based on amount of use, IBM enforce the use of licenses and that the level of license is appropriate to the level of use, and the IBM legal team travel in packs & have huge dorsal fins.

Just be sure that when you present the "proof of concept" this fact is brought clearly to the mind of the receipient. I know one site that was running a "production sized scale and load test" of an IBM based solution; IBM pointed out that they'd been running the test for 3 years, it contained real production data & they'd been told for the past 2 years to stop or buy more license.

It ended badly for all concerned. Except for IBM. And me. Always take hard copy of important emails.....
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
DaeMoohn
PostPosted: Mon Mar 11, 2013 1:22 pm    Post subject: Reply with quote

Apprentice

Joined: 04 Jun 2010
Posts: 26

First, to clarify, I didn't say it's free, I said it's free of charge, that means that the conditions of the license that I use, which I am bound to respect it, make the software free to use. No piracy involved. Now, let's get on:

1. solidDb was already on my list as a caching solution. I'm not sure how it distributes, but distribution might not be a good idea. solidDb is owned by IBM, so it's even better, but I have no prior knowledge of use.

2. Solved.

3. I read some posts with setting the expiry time so that you get an inverse logic (the notification of expiration tells you something actually happened).

4. The entity that would hold state would be a Process Manager if you would use EAI terminology.

5. I don't plan using Websphere Message Broker at all because I don't need any transformation on the messages being sent. There would be no business logic inside the messaging infrastructure. I need the message infrastructure to scale in both dimensions easily, without tying my feet to databases. For more architecture related info, check Command Query Responsibility Separation (CQRS).

6. Azure Service Bus isn't an equal match of Websphere MQ, I know. I used it here because it has features that, shamefully, Azure Queues doesn't have, like publish/subscribe(!!!), which Websphere MQ does.

7. I'm not a nitpicker trying to find edge cases where something works and other stuff doesn't. I try to implement an "agnostic way" that my application would handle Websphere MQ or Azure Service Bus or MSMQ so that the core of it would remain un-poluted with this infrastructure stuff.
Back to top
View user's profile Send private message
Vitor
PostPosted: Mon Mar 11, 2013 3:50 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

DaeMoohn wrote:
First, to clarify, I didn't say it's free, I said it's free of charge, that means that the conditions of the license that I use, which I am bound to respect it, make the software free to use.


Echoing my point; fine for a proof of concept, subject to a license when used otherwise unless all your software has is the client, which then leaves you reliant on your customer to have (and configure correctly) the support you need.

DaeMoohn wrote:
1. solidDb was already on my list as a caching solution. I'm not sure how it distributes, but distribution might not be a good idea. solidDb is owned by IBM, so it's even better, but I have no prior knowledge of use.


It distributes like all IBM software; see above.

DaeMoohn wrote:
2. Solved.


Or at least clarified.

DaeMoohn wrote:
3. I read some posts with setting the expiry time so that you get an inverse logic (the notification of expiration tells you something actually happened).


What you're describing are the WMQ report options, where one of the reports is that the message has expired. IMHO the problem with the use case you describe here is where you want to cancel the wait when another message shows up. Unless you can correlate the messages (in the technical sense) to find and consume the waiting message it will go off anyway. Even if you can correlate (with MsgId, JMS Selectors, etc) you could get in a tangle & not be performant.

DaeMoohn wrote:
4. The entity that would hold state would be a Process Manager if you would use EAI terminology.


IBM makes one. It fully integrates with WMQ & WMB.

DaeMoohn wrote:
5. I don't plan using Websphere Message Broker at all because I don't need any transformation on the messages being sent. There would be no business logic inside the messaging infrastructure. I need the message infrastructure to scale in both dimensions easily, without tying my feet to databases.


- WMB does much more than transform messages
- WMB does not tie your feet or any part of you to a database in v7 or later
- WMB scales in both directions very well

DaeMoohn wrote:
6. Azure Service Bus isn't an equal match of Websphere MQ, I know. I used it here because it has features that, shamefully, Azure Queues doesn't have, like publish/subscribe(!!!), which Websphere MQ does.


Windoze.

DaeMoohn wrote:
7. I'm not a nitpicker trying to find edge cases where something works and other stuff doesn't. I try to implement an "agnostic way" that my application would handle Websphere MQ or Azure Service Bus or MSMQ so that the core of it would remain un-poluted with this infrastructure stuff.


It's a noble ambition, but given the multitude of ways "this infrastructure stuff" exposes features it's a problem in the real world. Imagine you implement this wait feature with reporting (as I describe above), then you sell to a customer with Azure who wants to use scheduled messages.

I'm not nitpicking either. I'm just saying.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
DaeMoohn
PostPosted: Mon Mar 11, 2013 4:59 pm    Post subject: Reply with quote

Apprentice

Joined: 04 Jun 2010
Posts: 26

I never knew we also do BPM software but i guess it's a bit too much.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Tue Mar 12, 2013 3:48 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

If you want to do it in a messaging infrastructure agnostic manner, then you must build to the lowest common denominator.

This means that you don't get to take unfair advantage of advanced features of specific technology.

This is what Vitor has pointed out.

If you want to compare MQ and Azure, you're really not comparing the same things. Azure is a service broker, that takes unfair advantage of features of WCF and MSMQ. IBM's service broker is Message Broker, which takes unfair advantage of features of WebSphere MQ.

Message Broker will let you send a message to a flow. This flow can then forward the message on to a backend service. At the same time, it can dispatch a timeout control message to cause a timeout notification node to fire 15 minutes later, which will start another message flow that can then do various things, including fire a cancellation message.

There are various ways you can construct both flows to share enough state such that you can cancel a specific request or cause a specific request not to actually get sent to the backend.
Back to top
View user's profile Send private message
DaeMoohn
PostPosted: Tue Mar 12, 2013 4:46 am    Post subject: Reply with quote

Apprentice

Joined: 04 Jun 2010
Posts: 26

Thanks, mqjeff, you made it clear now. I guess I'll target the least common denominator for the common cases. As this is just a proof of concept, the more advanced usages can be left out or introduced in a less delicate way. I use it as an exercise, an educational tool, so I don't want to delve into linking patterns into WMB. While it would be fun, adding too much complexity from the start would pollute the exercise. Thanks, guys!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » IBM MQ Java / JMS » Schedule the enquing of a messages using XMS
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.