У меня есть просто верблюд сервер MINA с помощью JAVA DSL, и я бегу как пример, документированной здесь:Apache верблюд отправить простое сообщение
Я пытаясь создать образец приложения, размещенного в «mina: tcp: // localhost: 9991» (aka MyApp_B), который отправляет очень простое сообщение серверу, размещенному на «mina: tcp: // localhost: 9990» (aka MyApp_A).
Я хочу отправить простое сообщение, содержащее строку в заголовке (это «Hellow World!») И с адресом в теле.
public class MyApp_B extends Main{
public static final String MINA_HOST = "mina:tcp://localhost:9991";
public static void main(String... args) throws Exception {
MyApp_B main = new MyApp_B();
main.enableHangupSupport();
main.addRouteBuilder(
new RouteBuilder(){
@Override
public void configure() throws Exception {
from("direct:start")
.setHeader("order", constant("Hello World!"))
.setBody(constant(MINA_HOST))
.to("mina:tcp://localhost:9990");
}
}
);
System.out.println("Starting Camel MyApp_B. Use ctrl + c to terminate the JVM.\n");
main.run();
}
}
public class MainApp_A {
public static void main(String... args) throws Exception {
Main main = new Main();
main.enableHangupSupport();
main.addRouteBuilder(new RouteBuilder(){
@Override
public void configure() throws Exception {
from("mina:tcp://localhost:9990").bean(MyRecipientListBean.class,
"updateServers").to("direct:debug");
from("direct:debug").process(new Processor() {
public void process(Exchange exchange) throws Exception {
System.out.println("Received order: " +
exchange.getIn().getBody());
}
});
}
});
main.run(args);
}
}
Bean используется MyApp_A:
public class MyRecipientListBean {
public final static String REMOVE_SERVER = "remove";
public final static String ADD_SERVER = "add";
private Set<String> servers = new HashSet<String>();
public void updateServers(@Body String serverURI,
@Header("order") String order){
System.out.println("===============================================\n");
System.out.println("Received " + order + "request from server " + serverURI + "\n");
System.out.println("===============================================\n");
if(order.equals(ADD_SERVER))
servers.add(serverURI);
else if(order.equals(REMOVE_SERVER))
servers.remove(serverURI);
}
}
Я сделал этот код, тем не менее, кажется, что серверы с другой стороны, чтобы не получить ничего. Поэтому у меня есть 2 вопроса:
- Я делаю что-то неправильно?
- Есть ли лучший способ отправить сообщение с помощью Camel?
Есть ли верблюд, выводящий любые журналы? Каков адрес вашего сервера MINA? Вы устанавливаете содержимое сообщения с портом '9991', но в' .to' вы указали номер порта '9000'. –
Адрес другого сервера: «mina: tcp: // localhost: 9990». Адрес сервера, на котором выполняется этот конкретный образец, - «mina: tcp: // localhost: 9991». В этом случае я говорю серверу 9990, что я сервер 9991. Сервер 9990 ничего не печатает. Проблема в том, что сервер «mina: tcp: // localhost: 9990» ничего не получает от «mina: tcp: // localhost: 9991» –
Вы не указали достаточно своего кода, чтобы узнать, что происходит. –