我们正在尝试为应用程序设置架构。这是我们的第一次。此应用程序不与最终用户交互,这是我的内部计算目的。
我们有一个远程DBServer
(Ms sql server azure),其中1个数据库名称为DBTesting
。每当在DBTesting
中修改任何数据时,它都会将java应用程序名称触发为App1
。
问题1:
触发App1
的可能性有多大。
在App1
中,我正在运行.exe
文件,该文件以C
语言编写。评估需要20分钟。如果在20分钟内多次修改DBTesting
,则会从DBTesting
向App1
发送大量请求。但我不希望一次处理更多请求。所以我想在队列基础中触发App1
。完成上一次Http
请求后,只有Queue会释放下一个HTTP请求。
问题2:
有没有办法使用Java
或任何其他技术实现此功能
我们正在使用此Link
与数据库进行交互UserName:MyUserName
密码:MyPassword
我们正试图在1周内解决这些问题,但我们并不知道哪条路是好方法。
任何人都可以建议我使用一些适合我的要求的教程。
感谢。
答案 0 :(得分:0)
简单的方法是在数据库中有一个表,其中包含Http请求和一个运行查询的程序,当找到结果时,如果没有睡眠则发出请求。
而(真){
//query the DB
if (have_results){
//http request
// remove request from the DB
}else{
// sleep 1s
}
}
它不是代码,但应该很容易。
由于
答案 1 :(得分:0)
您可以使用Active-MQ进行排队。 Active MQ, Hello World
如果您使用的是MSSQL service broker,则它已提供Message Queues。你只需要弄清楚如何在你的情况下正确使用它。
这是指向Service Broker to JMS bridge的链接。
使用以下步骤:
第1部分:
第2部分:
This link might help you indirectly.
由于Azure不支持服务代理,因此必须有其他方式来实现part1。
第1部分(以下方式实施以下步骤):
步骤1.在数据库更改时生成请求数据(不是消息,只是数据)。
I want to send modified or new data with request from DB to Java Application
步骤2.根据生成的数据创建消息。
步骤3.阅读消息并将其发送到队列。
send messages including data to Queue
消息结构:
以下消息指向Application1
。
App1?data="1,2,3,4,5,6,7,8,9,10..."
以下消息指向Application2
。
App2?data="1,2,3,4,5,6,7,8,9,10..."
If it allow to mention our own custom message,then I will create one more table in DB.This table have 2 columns.1 row points to ApplicationName and 2 row points to message Name.It is useful while forwarding time.
第2部分(截至目前仍然相同):
Xml Structure的方式如下。
<Message>
<Message-Body>
<Message-Context>App1</Message-Context>
<URL>`http://localhost:8080/App1`</URL>
</Message-Body>
<Message-Body>
<Message-Context>App2</Message-Context>
<URL>`http://localhost:8080/App2`</URL>
</Message-Body>
</Message>