Это будет интересный пост в блоге. В этом посте я объясню следующее:

  1. Получение данных из APIGEE (перенаправление URL) в JAVA
  2. Отправка полученных данных из APIGEE и вставка в очередь RabbitMQ.
  3. Извлеките данные из Rabbit MQ с помощью Mirthconnect.

1. СОЗДАТЬ URL-адрес APIGEE:

APIGEE доступен как для предприятия, так и для обычной бесплатной версии. Вы можете войти в Apigee. Существуют различные цели и варианты использования Apigee, но в настоящее время я использую этот Apigee в качестве механизма перенаправления URL-адресов.

Возьмите любой источник данных JSON, который может быть доступен бесплатно. Войдите в APIGEE и нажмите «Прокси-серверы API». На начальной странице нажмите кнопку +PROXY справа вверху.

У вас будет фактический URL-адрес, но вы не будете использовать этот URL-адрес для связи с клиентами, вместо этого вы предоставите один URL-адрес, который будет сопоставлен с исходным URL-адресом.

На приведенном выше экране «Имя прокси» вы должны указать имя, которое вы хотите указать в качестве имени прокси, в первом текстовом поле в моем случае, которое я предоставил (vibinces-eval-test). В Proxy Base Path вам необходимо указать подконтекст вашего имени API, которое я предоставил (apigeejsonprofile). В Existing API вам необходимо указать полный URL-адрес существующего JSON API. Описание является необязательным полем, вы можете указать его или нет.

Как только он будет создан, мой URL-адрес будет выглядеть так: http://vibinces-eval-test.apigee.net/apigeejsonprofile, вы также можете получить URL-адрес с именем по вашему выбору. На вкладке Безопасность рекомендуется выбирать заголовки CORS при просмотре. Потому что всегда можно получить ошибку перекрестного происхождения, когда вы пытаетесь получить доступ к данным из браузеров, которые не проверены должным образом. Я также не использую авторизацию для API.

На вкладке «Далее» вы можете увидеть, как предоставленные данные преобразуются в ваш URL-адрес. Также интересно, что APIGEE предоставляет вам два типа URL-адресов, которые можно использовать как в тестировании или БЕТА-версии, так и один для PROD.

Теперь ваш ре-маршрутизатор URL создан. То есть, если вы нажмете URL-адрес http://vibinces-eval-test.apigee.net/apigeejsonprofile, вы увидите данные JSON, которые на самом деле принадлежат какому-то другому URL-адресу.

2. КОД JAVA — ДЛЯ ПОЛУЧЕНИЯ ДАННЫХ ИЗ APIGEE:

Я собираюсь создать следующие два класса:

  1. FetchJsonFromApigee.java
  2. PushApigeeDataToRabbitMQ.java

1. FetchJsonFromApigee.java:

import java.io.BufferedReader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL ;
public class FetchJsonFromApigee {
public static String call_me() throws Exception {
String url = «http://vibinces-eval-test.apigee.net/apigeejsonprofile”; ;
URL obj = новый URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty ("User-Agent", "Mozilla/5.0");
int responseCode = con.getResponseCode();
System.out.println("Код ответа: " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in .readLine() ) != null) {
response.append(inputLine);
} in .close();
System.out.println("response: " + response.toString()); return response.toString();
}
public String sendMessage() throws Exception {
String pushJsonMessage = FetchJsonFromApigee.call_me();
return pushJsonMessage;
>
}

2. PushApigeeDataToRabbitMQ.java:

import java.io.IOException;
import java.util.concurrent.TimeoutException;

импортировать com.rabbitmq.client.Channel;
импортировать com.rabbitmq.client.Connection;
импортировать com.rabbitmq.client.ConnectionFactory;

/**
* @author Vibinchander.V
*
*/
public class PushApigeeDataToRabbitMQ {
private final static String QUEUE_NAME = TestQueuing;

public static void passMessage(String message) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection() ;
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
channel.basicPublish(“”, QUEUE_NAME, null, message. getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
}

public static void main(String[] args) throws IOException, TimeoutException {
FetchJsonFromApigee getData = new FetchJsonFromApigee();
String passMessage = null;
try {
passMessage = getData. sendMessage();
} catch (Exception e) {
e.printStackTrace();
}
PushApigeeDataToRabbitMQ.passMessage(passMessage);
System.out.println («Выполнен основной метод !!!»);
}
}

Когда вы запустите первый класс, вы увидите, что данные извлекаются из APIGEE и помещаются в очередь сообщений RabbitMQ.

3. Напишите файл JAR, который будет извлекать данные из RabbitMQ:

Я пишу следующий класс. этот класс будет использоваться внутри инструмента Mirth, который будет действовать как потребитель для извлечения данных из RabbitMQ.

импортировать java.io.IOException;
импортировать java.io.IOException;
импортировать java.util.concurrent.TimeoutException;

импортировать com.rabbitmq.client.AMQP;
импортировать com.rabbitmq.client.Channel;
импортировать com.rabbitmq.client.Connection;
импортировать com.rabbitmq.client.ConnectionFactory;
импортировать com.rabbitmq.client.ConnectionFactory;
/> import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.QueueingConsumer;
/**
*
@author Vibinchander.V
*
*/
public class QueueConsumer {
public String returnMessage( String queueName) выбрасывает IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Соединение connection = factory.newConnection();
Канал канала = connection.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
логическое значение noAck = false;
@SuppressWarnings (устарело)
QueueingConsumer ConsumerVal = new QueueingConsumer(channel); channel.basicConsume(queueName, noAck, ConsumerVal);
логическое значение runInfinite = true;
QueueingConsumer.Delivery delivery = null;
//while (runInfinite) { //Постановка в очередьConsumer.Delivery delivery;

попробуйте {
delivery = ConsumerVal.nextDelivery();
} catch (InterruptedException т.е.)
{ // continue;
} //System.out.println("Сообщение получено" + новая строка(delivery.getBody())); channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
//}
channel.close();
connection.close();
return new String(delivery.getBody());

}

Сделайте вышеуказанную программу в файле JAR, поместите ее в пользовательскую папку lib Mirth. возможно, вам придется включить и другие файлы JAR. Внутри коннектора исходного кода Mirth для чтения Javascript напишите следующий код:

var queueConsumer = new org.envision.queuing.QueueConsumer();
msg = queueConsumer.returnMessage("TestQueuing");
logger.debug(msg);
return msg;

Если вы хотите понять и узнать, как установить rabbitMq на Linux и Windows, используйте эти ссылки.