| Author |
Send msg from Oracle to MSMQ via BizTalk in real-time
|
|
| RedHair 2005-08-26, 5:55 pm |
| Dear all,
I want to send msg to a MSMQ queue(Win2000) from HPUX+Oracle in real-time
while any data update occurs in Oracle db,
how to use BizTalk 2004 to implement this? thanks in advance!
| |
|
| That's a pretty common scenario with biztalk. You would need to setup
an adapter to poll the oracle database for updates. Microsoft just
announced the availability of an Oracle adapter. Once biztalk receives
the data from Oracle you can transform it, or just pass it through, and
spit it out to a queue using the MSMQ adapter.
| |
| RedHair 2005-08-27, 2:49 am |
| Is there any configuration or programming works need to be done in HPUX +
Oracle side? or I only
implement everything on Windows side?
Btw, the Oracle adapter is free or not? Thanks.
"steve" <steve_c_t@hotmail.com>
???????:1125077966.807742.235070@g47g2000cwa.googlegroups.com...
> That's a pretty common scenario with biztalk. You would need to setup
> an adapter to poll the oracle database for updates. Microsoft just
> announced the availability of an Oracle adapter. Once biztalk receives
> the data from Oracle you can transform it, or just pass it through, and
> spit it out to a queue using the MSMQ adapter.
>
| |
|
| you probably won't need to do anything on the Oracle server other then
setup a user account for biztalk to login with.
i spoke too soon about the oracle adater, it won't be released until
next year. your current options are to buy one from a thrid party
(iWay for example) or search for a free one a fellow developer has
written and is sharing.
| |
| Chris Holliday 2005-08-27, 5:49 pm |
| Another option would be to simply use the Enterprise Library or any data
access code .net objects to access Oracle directly. A pattern I use
repeatedly against our Oracle dbs is:
- Source system event tables write events to custom log tables (capture
message primary key values, time stamp, event flag, etc) using Oracle
Triggers
- Biztalk polls the table using a timer receive port [1] for any new
messages marking the retrieved messages as "retrieved"
- These messages are sent through a "messageBuilder" orchestration where the
key values are used to generate a message and output directly to the Biztalk
Messagebox
- A "<yourMessageType>Processor" orchestration then handles additional
filtering, application specific message building and routing
If you don't need to do much filtering or message building, you could use a
send port immediately after the timer receive port above. Simply send the
message to a MSMQ.
Hope that helps.
[1]
http://www.gotdotnet.com/Workspaces...d1-865c61f0bc7d
"steve" <steve_c_t@hotmail.com> wrote in message
news:1125130248.674649.264730@f14g2000cwb.googlegroups.com...
> you probably won't need to do anything on the Oracle server other then
> setup a user account for biztalk to login with.
>
> i spoke too soon about the oracle adater, it won't be released until
> next year. your current options are to buy one from a thrid party
> (iWay for example) or search for a free one a fellow developer has
> written and is sharing.
>
| |
| Jason Agostoni 2005-08-27, 5:49 pm |
| Just to deviate from the adapter idea you could, in theory, write a
Java procedure within Oracle to call a WebPort in BizTalk. In fact,
you could skip BizTalk altogether and just write a web serivce (in
ASP.Net, of course) that would post to an MSMQ and call that from
Oracle. BizTalk would certainly help abstract the solution but would
be costly if all you want to do is post to an MSMQ queue. If you
already own BizTalk then I would certiainly leverage that.
This way you would not have to poll the database and you would get
real-time results.
Jason Agostoni
Associate .Net Architect
CEI (www.ceiamerica.com)
http://jason.agostoni.net
| |
| RedHair 2005-08-28, 7:47 am |
| Thank you!
Since this solution uses a timer, is it a real-time solution?
And I need the Oracle knowledge to create trigger or store procedure for the
temp log table?
But I think this solution is able to queue the data in the log table in case
the MSMQ server
is down or the network is broken. am I right?
"Chris Holliday" <crholliday@noSpamPlease-adventureology.com> 撰寫於郵件新聞:OCLzpUyqFHA.2540@TK2MSFTNGP09.phx.gbl...
> Another option would be to simply use the Enterprise Library or any data
> access code .net objects to access Oracle directly. A pattern I use
> repeatedly against our Oracle dbs is:
>
> - Source system event tables write events to custom log tables (capture
> message primary key values, time stamp, event flag, etc) using Oracle
> Triggers
> - Biztalk polls the table using a timer receive port [1] for any new
> messages marking the retrieved messages as "retrieved"
> - These messages are sent through a "messageBuilder" orchestration where
> the
> key values are used to generate a message and output directly to the
> Biztalk
> Messagebox
> - A "<yourMessageType>Processor" orchestration then handles additional
> filtering, application specific message building and routing
>
> If you don't need to do much filtering or message building, you could use
> a
> send port immediately after the timer receive port above. Simply send the
> message to a MSMQ.
>
> Hope that helps.
>
> [1]
> http://www.gotdotnet.com/Workspaces...d1-865c61f0bc7d
>
>
>
> "steve" <steve_c_t@hotmail.com> wrote in message
> news:1125130248.674649.264730@f14g2000cwb.googlegroups.com...
>
>
| |
| RedHair 2005-08-28, 7:47 am |
| Since I'm not familiar with Oracle and HPUX side, where can I
find a sample about how to call web service from Oracle side.
Thanks in advance.
"Jason Agostoni" <jagostoni@gmail.com>
???????:1125167491.979013.232280@g14g2000cwa.googlegroups.com...
> Just to deviate from the adapter idea you could, in theory, write a
> Java procedure within Oracle to call a WebPort in BizTalk. In fact,
> you could skip BizTalk altogether and just write a web serivce (in
> ASP.Net, of course) that would post to an MSMQ and call that from
> Oracle. BizTalk would certainly help abstract the solution but would
> be costly if all you want to do is post to an MSMQ queue. If you
> already own BizTalk then I would certiainly leverage that.
>
> This way you would not have to poll the database and you would get
> real-time results.
>
> Jason Agostoni
> Associate .Net Architect
> CEI (www.ceiamerica.com)
> http://jason.agostoni.net
>
| |
|
|
| Chris Holliday 2005-08-28, 5:49 pm |
| You can loop the timer as fast or as slow as you like. It uses the .NET
Timer objects for establishing intervals. Most of my interfaces are set at
around 60 second loops.
You will need to know how to create the triggers/procedures, but this is
very easy to come by using google.
You are correct that the log table will store your values until completely
processed by your solution (and beyond if you need to archive). You can have
the final step in your interface make a call back to the database flagging
the transaction as complete.
I think the solution mentioned below on the other branch of this thread is
also a good one. Another option along those same lines is to simply consume
an Oracle A/Q (Advanced Queue) from a .NET listener or google how to push an
Oracle A/Q to an MSMQ queue. I bet there is something out there that would
do this.
C.
"RedHair" <redhair@ms40.url.com.tw> wrote in message
news:eh$WkF7qFHA.3096@TK2MSFTNGP15.phx.gbl...
> Thank you!
> Since this solution uses a timer, is it a real-time solution?
> And I need the Oracle knowledge to create trigger or store procedure for
the
> temp log table?
>
> But I think this solution is able to queue the data in the log table in
case
> the MSMQ server
> is down or the network is broken. am I right?
>
>
> "Chris Holliday" <crholliday@noSpamPlease-adventureology.com>
撰寫於郵件新聞:OCLzpUyqFHA.2540@TK2MSFTNGP09.phx.gbl...
use[vbcol=seagreen]
the[vbcol=seagreen]
http://www.gotdotnet.com/Workspaces...d1-865c61f0bc7d[vbcol=seagreen]
>
>
|
|
|
|