Будет ли Apache Camel использоваться между SQL-сервером и Activemq?

Работа приложения в настоящее время: я написал триггер для таблицы на сервере SQL, чтобы запускать внешнее java-приложение (которое находится на сервере tomcat) через HTTP-запрос всякий раз, когда в эту таблицу вставляется. Я использовал xp_cmdshell внутри триггера, например

Exec xp_cmdshell 'sqlps -command "$http=New-Object system.Net.WebClient;
$http.uploadString(\"http://127.0.0.1:8080/MessageProducer\",\"param1=somevalue ^& param2=thriu\")"'

Java-приложение написано, чтобы взять queryString и создать сообщение в activemq. Наконец, я получаю сообщение в activemq всякий раз, когда есть вставка в SQL server.

Работа приложения, которое я хочу: SQL-сервер способен отправлять сообщения всякий раз, когда на SQL-сервере происходит обновление/вставка, так почему я должен использовать Java-приложение в качестве промежуточного звена между SQL-сервером и activemq. Есть ли способ отправить сообщение с SQL-сервера на activemq. Пока я кодирую для activemq, я наткнулся на Apache camel, поможет ли это мне?.


person niren    schedule 13.09.2013    source источник


Ответы (1)


Вам действительно не нужно использовать какое-либо промежуточное программное обеспечение, такое как ваш Tomcat или Apache Camel, если вы этого не хотите. ActiveMQ может получать сообщения прямо из коробки так, как вы отправляете их сегодня.

Это будет примерно так (при необходимости вы можете добавить аутентификацию):

Exec xp_cmdshell 'sqlps -command "$http=New-Object system.Net.WebClient;
$http.uploadString(\"http://localhost:8161/api/message/TEST?type=queue\",\"param1=somevalue ^& param2=thriu\")"'
person Petter Nordlander    schedule 13.09.2013
comment
@Питер. Я получаю потребителя, когда запускаю этот фрагмент кода. Исходя из вопроса, думаю, что OP хочет заполнить очередь activemq, когда что-то изменится в его базе данных sql. мы можем это сделать? - person shiva; 16.09.2013
comment
@peter Я хочу отправить сообщение с сервера sql во внешнее приложение. проверьте мой предыдущий пост здесь. Я опубликовал этот вопрос, чтобы получить ответ, чтобы разместить Apache Camel для получения сообщения от сервера sql и создания сообщения для activemq. - person niren; 16.09.2013
comment
Что не так? Этот URL localhost:8161/api/message/TEST?type=queue с HTTP/POST помещает содержимое сообщения POST в очередь TEST. Мне кажется самый простой способ. Другой альтернативой может быть написание небольшого производителя очередей в .NET с использованием ActiveMQ NMS и встраивание его в триггер technet.microsoft.com/en-us/library/ms179562.aspx - person Petter Nordlander; 16.09.2013
comment
Несмотря на то, что я фанат Camel, я не вижу смысла добавлять больше компонентов. Camel на самом деле не может слушать триггеры - просто опросите некоторые таблицы/представления, а затем создайте сообщение. В любом случае вам нужен ваш триггер в SQL (либо для непосредственного создания сообщения, либо для таблицы опроса, заполненной строками, из которых Camel может извлекать и создавать сообщения). - person Petter Nordlander; 16.09.2013
comment
@Petter Альтернативный способ, которым вы сказали, написать небольшой производитель очередей в .NET с использованием ActiveMQ NMS и встроить его в триггер, который мне нравится, но наше приложение не является приложением .net. Есть ли другой способ заставить наше требование работать? - person niren; 16.09.2013