>- see footer for list info -<
Evening All,
 
I would like to pick your brains for a moment and seek your advice.
 
I wish to be able to offer a service which may require in the region of 10K
submissions to a remote web service during a period of about 1 minute not
consistently but at peak traffic. A bit of back ground would help here me
thinks.
 
We are capturing customers information (mobile numbers) into a DB and at
some point may wish to send a broadcast to all the mobile numbers captured.
This broadcast needs to happen as quickly as possible and an initial period
of 1 min (although 5 mins may be more realistic) has been given.
 
The message being sent out to the mobiles is the same in every instance but
the gateway can only receive 1 mobile and 1 message at a time. They have a
good relationship with the gateway provider and would prefer not to have to
change.
 
My query is this. At present, I have a mobiles table and a message table. In
this case, the mobiles table would hold 10K records and the message table 1
single record with a link table between them. The mobiles table is expected
to have a column which is called status. Effectively, I know that a single
machine with CF or BlueDragon will not be able to go through 10K cfhttp
instances in the required time, believe me, I have tried it. As a result, I
am expecting to need potentially a bank of machines to actually send the
messages. I do have access to CFHTTP5 which allows asynchronous submissions
at up to 64 simultaneous connections but still think this will struggle.
 
Even if I had 5 machines polling the db to see if there were any messages to
be sent (i.e. status = 0 or something like that), what I need to do is make
sure that each instance is only picking up records that a) need to be sent
and b) have not been picked up by other machines performing the same task. I
therefore need to change the status from 0 to 1 or something to indicate it
is being processed, this would then change to 2 when that particular message
to the mobile has been sent and hence not be picked up in future.
 
I would prefer to do it all with stored procedures but the issues of
scalability come to mind, should mySQL be used and is it capable of being
clustered? Judging by the number of people migrating from Informix to it I
would suggest it is up to the task but I have no experience of it. Using MS
SQL I would simply have a stored procedure (again, know the basics but not
the more intricate methods) grab the message but telling each instance of
the message sending process on CF or BlueDragon to only pickup say 500
records but before it tries to send the messages it changes the status to
pending (1). Is there a way within the Stored Procedure to SELECT TOP 500
etc and then change the status only on those 500 to pending prior to another
process being kicked off on another box querying the same database looking
for the top 500 before the status has been changed, guess I am questioning
the record locking process within the SP.
 
I know this is a long winded way of asking what may only be a couple of
simple points but my brain hurts and it is 22:44.
 
Will be in front of PC all tomorrow so your pearls of wisdom will be much
appreciated.
 
With Regards,
 
Lee
_______________________________________________

For details on ALL mailing lists and for joining or leaving lists, go to 
http://list.cfdeveloper.co.uk/mailman/listinfo

--
CFDeveloper Sponsors:-
>- Hosting provided by www.cfmxhosting.co.uk -<
>- Forum provided by www.fusetalk.com -<
>- DHTML Menus provided by www.APYCOM.com -<
>- Lists hosted by www.Gradwell.com -<
>- CFdeveloper is run by Russ Michaels, feel free to volunteer your help -<

Reply via email to