You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by nitingupta183 <ni...@gmail.com> on 2009/01/07 07:19:39 UTC

JMS Design related question

Hi All,

I am quite new to message driven applications/architecture. I have a
requirement which makes my application a candidate for the JMS/Apache Camel.

I have got one application which is required to integrate with few SMS
servers. These SMS servers can be located in different countries. My app is
to be able to send and receive messages from these SMS servers
asynchronously.

Please help me with following so that I can design a solution:

1) Where should I put the message broker (ActiveMQ). On the SMS server side,
my app side or at both the sides should I put a broker.
2) Initially I thought that I can put the broker on the SMS server side and
my app can register itself as a listener on this broker. Similarly my app
can send all the messages to this broker which can be listened by the SMS
server. But I am not sure whether it will have any performance impact as the
two servers can be in different countries.
3) My app is going to be quite heavy on the machine on which it will run. So
if I must put a broker to my app side, will that degrade the performance of
my app.
4) What are the best practices of deploying a broker?

Thanks & Regards,
Nitin
-- 
View this message in context: http://www.nabble.com/JMS-Design-related-question-tp21325598s22882p21325598.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: JMS Design related question

Posted by James Strachan <ja...@gmail.com>.
2009/1/7 nitingupta183 <ni...@gmail.com>:
>
> And will it be good if this deployment can be supported by a broker at every
> SMS server side?

The only real reason to do that is if you want to store & forward
messages locally in a separate broker in the country of the SMS server
in case the WAN goes down - if and only if the SMS server is much
slower than the JMS broker so that loads of JMS messages back up
waiting for the SMS server to catch up - and the SMS messages are
highly time critical.

Its probably simplest to start off using a single broker and see how you get on.
-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Re: JMS Design related question

Posted by nitingupta183 <ni...@gmail.com>.
And will it be good if this deployment can be supported by a broker at every
SMS server side?

Regards,
nitin


James.Strachan wrote:
> 
> OK, so I'd maybe run a broker on the same LAN as the application -
> maybe on another box if the application box is gonna be heavily used.
> Particularly if you have many SMS servers in different countries.
> 
> 2009/1/7 nitingupta183 <ni...@gmail.com>:
>>
>> Hi James,
>>
>> Thanks for your response.
>>
>> Actually both, the application and the SMS server are being developed by
>> me.
>> Both can send and consume messages. Application will do a routing of the
>> messages and will send it over to a particular SMS server. So a message
>> M,
>> can be sent to SMS server in Canada or a SMS server in India, depending
>> upon
>> run time conditions.
>> Any message that comes to the SMS server from the underlying GSM channel
>> will always be delivered to the application.
>>
>> So application can send messages to multiple consumers (only pne at a
>> time)
>> while SMS server can always send message to the same consumer.
>>
>> Load on application is going to be more as it can receive messages from
>> multiple SMS servers but a SMS server can only receive JMS messages from
>> one
>> source i.e. application.
>>
>> Regards,
>> nitin
>>
>>
>> James.Strachan wrote:
>>>
>>> 2009/1/7 nitingupta183 <ni...@gmail.com>:
>>>>
>>>> Hi All,
>>>>
>>>> I am quite new to message driven applications/architecture. I have a
>>>> requirement which makes my application a candidate for the JMS/Apache
>>>> Camel.
>>>>
>>>> I have got one application which is required to integrate with few SMS
>>>> servers. These SMS servers can be located in different countries. My
>>>> app
>>>> is
>>>> to be able to send and receive messages from these SMS servers
>>>> asynchronously.
>>>>
>>>> Please help me with following so that I can design a solution:
>>>>
>>>> 1) Where should I put the message broker (ActiveMQ). On the SMS server
>>>> side,
>>>> my app side or at both the sides should I put a broker.
>>>
>>> Closest to the clients that send/consume the most JMS traffic. A
>>> single broker should do fine for a while; so I'd say put it with (or
>>> in the same JVM as) your app
>>>
>>>> 2) Initially I thought that I can put the broker on the SMS server side
>>>> and
>>>> my app can register itself as a listener on this broker. Similarly my
>>>> app
>>>> can send all the messages to this broker which can be listened by the
>>>> SMS
>>>> server. But I am not sure whether it will have any performance impact
>>>> as
>>>> the
>>>> two servers can be in different countries.
>>>
>>> Would the JMS consumer be in the SMS server? Am sure it'd be fine
>>> whichever way around you do it really.
>>>
>>>
>>>> 3) My app is going to be quite heavy on the machine on which it will
>>>> run.
>>>> So
>>>> if I must put a broker to my app side, will that degrade the
>>>> performance
>>>> of
>>>> my app.
>>>
>>> Maybe another box on the same LAN as your app? Though if your SMS
>>> server box isn't hammered, put it there. The only real cost with
>>> moving it far away over a WAN rather than being close on a LAN is
>>> gonna be added latency sending messages around really.
>>>
>>>
>>>> 4) What are the best practices of deploying a broker?
>>>
>>> Run it using the scripts supplied; then use the web console and/or JMX
>>> to monitor it.
>>>
>>> --
>>> James
>>> -------
>>> http://macstrac.blogspot.com/
>>>
>>> Open Source Integration
>>> http://fusesource.com/
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/JMS-Design-related-question-tp21325598s22882p21327352.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> James
> -------
> http://macstrac.blogspot.com/
> 
> Open Source Integration
> http://fusesource.com/
> 
> 

-- 
View this message in context: http://www.nabble.com/JMS-Design-related-question-tp21325598s22882p21328244.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: JMS Design related question

Posted by James Strachan <ja...@gmail.com>.
OK, so I'd maybe run a broker on the same LAN as the application -
maybe on another box if the application box is gonna be heavily used.
Particularly if you have many SMS servers in different countries.

2009/1/7 nitingupta183 <ni...@gmail.com>:
>
> Hi James,
>
> Thanks for your response.
>
> Actually both, the application and the SMS server are being developed by me.
> Both can send and consume messages. Application will do a routing of the
> messages and will send it over to a particular SMS server. So a message M,
> can be sent to SMS server in Canada or a SMS server in India, depending upon
> run time conditions.
> Any message that comes to the SMS server from the underlying GSM channel
> will always be delivered to the application.
>
> So application can send messages to multiple consumers (only pne at a time)
> while SMS server can always send message to the same consumer.
>
> Load on application is going to be more as it can receive messages from
> multiple SMS servers but a SMS server can only receive JMS messages from one
> source i.e. application.
>
> Regards,
> nitin
>
>
> James.Strachan wrote:
>>
>> 2009/1/7 nitingupta183 <ni...@gmail.com>:
>>>
>>> Hi All,
>>>
>>> I am quite new to message driven applications/architecture. I have a
>>> requirement which makes my application a candidate for the JMS/Apache
>>> Camel.
>>>
>>> I have got one application which is required to integrate with few SMS
>>> servers. These SMS servers can be located in different countries. My app
>>> is
>>> to be able to send and receive messages from these SMS servers
>>> asynchronously.
>>>
>>> Please help me with following so that I can design a solution:
>>>
>>> 1) Where should I put the message broker (ActiveMQ). On the SMS server
>>> side,
>>> my app side or at both the sides should I put a broker.
>>
>> Closest to the clients that send/consume the most JMS traffic. A
>> single broker should do fine for a while; so I'd say put it with (or
>> in the same JVM as) your app
>>
>>> 2) Initially I thought that I can put the broker on the SMS server side
>>> and
>>> my app can register itself as a listener on this broker. Similarly my app
>>> can send all the messages to this broker which can be listened by the SMS
>>> server. But I am not sure whether it will have any performance impact as
>>> the
>>> two servers can be in different countries.
>>
>> Would the JMS consumer be in the SMS server? Am sure it'd be fine
>> whichever way around you do it really.
>>
>>
>>> 3) My app is going to be quite heavy on the machine on which it will run.
>>> So
>>> if I must put a broker to my app side, will that degrade the performance
>>> of
>>> my app.
>>
>> Maybe another box on the same LAN as your app? Though if your SMS
>> server box isn't hammered, put it there. The only real cost with
>> moving it far away over a WAN rather than being close on a LAN is
>> gonna be added latency sending messages around really.
>>
>>
>>> 4) What are the best practices of deploying a broker?
>>
>> Run it using the scripts supplied; then use the web console and/or JMX
>> to monitor it.
>>
>> --
>> James
>> -------
>> http://macstrac.blogspot.com/
>>
>> Open Source Integration
>> http://fusesource.com/
>>
>>
>
> --
> View this message in context: http://www.nabble.com/JMS-Design-related-question-tp21325598s22882p21327352.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Re: JMS Design related question

Posted by nitingupta183 <ni...@gmail.com>.
Hi James,

Thanks for your response.

Actually both, the application and the SMS server are being developed by me.
Both can send and consume messages. Application will do a routing of the
messages and will send it over to a particular SMS server. So a message M,
can be sent to SMS server in Canada or a SMS server in India, depending upon
run time conditions.
Any message that comes to the SMS server from the underlying GSM channel
will always be delivered to the application. 

So application can send messages to multiple consumers (only pne at a time)
while SMS server can always send message to the same consumer.

Load on application is going to be more as it can receive messages from
multiple SMS servers but a SMS server can only receive JMS messages from one
source i.e. application.

Regards,
nitin


James.Strachan wrote:
> 
> 2009/1/7 nitingupta183 <ni...@gmail.com>:
>>
>> Hi All,
>>
>> I am quite new to message driven applications/architecture. I have a
>> requirement which makes my application a candidate for the JMS/Apache
>> Camel.
>>
>> I have got one application which is required to integrate with few SMS
>> servers. These SMS servers can be located in different countries. My app
>> is
>> to be able to send and receive messages from these SMS servers
>> asynchronously.
>>
>> Please help me with following so that I can design a solution:
>>
>> 1) Where should I put the message broker (ActiveMQ). On the SMS server
>> side,
>> my app side or at both the sides should I put a broker.
> 
> Closest to the clients that send/consume the most JMS traffic. A
> single broker should do fine for a while; so I'd say put it with (or
> in the same JVM as) your app
> 
>> 2) Initially I thought that I can put the broker on the SMS server side
>> and
>> my app can register itself as a listener on this broker. Similarly my app
>> can send all the messages to this broker which can be listened by the SMS
>> server. But I am not sure whether it will have any performance impact as
>> the
>> two servers can be in different countries.
> 
> Would the JMS consumer be in the SMS server? Am sure it'd be fine
> whichever way around you do it really.
> 
> 
>> 3) My app is going to be quite heavy on the machine on which it will run.
>> So
>> if I must put a broker to my app side, will that degrade the performance
>> of
>> my app.
> 
> Maybe another box on the same LAN as your app? Though if your SMS
> server box isn't hammered, put it there. The only real cost with
> moving it far away over a WAN rather than being close on a LAN is
> gonna be added latency sending messages around really.
> 
> 
>> 4) What are the best practices of deploying a broker?
> 
> Run it using the scripts supplied; then use the web console and/or JMX
> to monitor it.
> 
> -- 
> James
> -------
> http://macstrac.blogspot.com/
> 
> Open Source Integration
> http://fusesource.com/
> 
> 

-- 
View this message in context: http://www.nabble.com/JMS-Design-related-question-tp21325598s22882p21327352.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: JMS Design related question

Posted by James Strachan <ja...@gmail.com>.
2009/1/7 nitingupta183 <ni...@gmail.com>:
>
> Hi All,
>
> I am quite new to message driven applications/architecture. I have a
> requirement which makes my application a candidate for the JMS/Apache Camel.
>
> I have got one application which is required to integrate with few SMS
> servers. These SMS servers can be located in different countries. My app is
> to be able to send and receive messages from these SMS servers
> asynchronously.
>
> Please help me with following so that I can design a solution:
>
> 1) Where should I put the message broker (ActiveMQ). On the SMS server side,
> my app side or at both the sides should I put a broker.

Closest to the clients that send/consume the most JMS traffic. A
single broker should do fine for a while; so I'd say put it with (or
in the same JVM as) your app

> 2) Initially I thought that I can put the broker on the SMS server side and
> my app can register itself as a listener on this broker. Similarly my app
> can send all the messages to this broker which can be listened by the SMS
> server. But I am not sure whether it will have any performance impact as the
> two servers can be in different countries.

Would the JMS consumer be in the SMS server? Am sure it'd be fine
whichever way around you do it really.


> 3) My app is going to be quite heavy on the machine on which it will run. So
> if I must put a broker to my app side, will that degrade the performance of
> my app.

Maybe another box on the same LAN as your app? Though if your SMS
server box isn't hammered, put it there. The only real cost with
moving it far away over a WAN rather than being close on a LAN is
gonna be added latency sending messages around really.


> 4) What are the best practices of deploying a broker?

Run it using the scripts supplied; then use the web console and/or JMX
to monitor it.

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/