camel入门 xmpp tcp 配置 之XMPPReceiver

xiaoxiao2024-05-07  32

 

这个是服务器

 

package testxmpp; import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.xmpp.XmppEndpoint; import org.apache.camel.component.xmpp.XmppExchange; import org.apache.camel.component.xmpp.XmppMessage; import org.apache.camel.component.xmpp.XmppPrivateChatProducer; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.DefaultEndpoint; import org.apache.cxf.common.logging.Log4jLogger; import org.apache.log4j.Logger; import org.jivesoftware.smack.XMPPConnection; import back.SendMessage; /**  * 上面例子的第一行创建一个一个RouteBuilder的匿名类的实例,这个匿名类需要实现 configure()方法。  * camelContext.addRoutes(RouterBuilder builder)  * 方法中调用了builder.setContext(this)方法,  * 这样RouteBuilder对象就获得了与之对应的CamelContext的,然后调用builder.configure()方法。  * 在configure方法中,可以调用例如 from(), filter(), choice(), when(),isEqualTo(),  * otherwise()以及to()方法。 RouteBuilder.from(String uri)  * 方法会调用与之对应的CamelContext的getEndpoint(uri)方法来获得指定的Endpoint,  * 并用一个FromBuilder包装这个Endpoint。这样 FromBuilder.filter(Predicate predicate)  * 方法就会创建一个在header("foo").isEqualTo("bar")这个表达式基础创建的Predicate(所谓的条件) 创建一个  * FilterProcessor对象。就这样,通过定义这些操作我们逐渐构建出了一个Route对象  * (使用RouterBuilder进行包装的)并且将这个Route对象添加进了与RouteBuilder所关联的CamelContext中。  *  */ public class XmppReceiver {     public static void main(String[] s) {                 String host = "192.168.1.20" ;         String port = "5201" ;         try {             CamelContext context = new DefaultCamelContext();                                     // 增加路由的接点,可以是一个URL也可以是file://test这样一个中间接点,用于转到下个路由             final Endpoint endpoint = context.getEndpoint("mina:tcp://"+host+":"+port);             final XmppEndpoint xmppendpoint = new XmppEndpoint("xmpp://localhost:5200") ;                         context.addRoutes(new RouteBuilder() {                 public void configure() {                     // from("queue:a").filter(header("foo").isEqualTo("bar")).to("queue:b");                     from(endpoint).process(new Processor() {                                 public void process(Exchange e)                                         throws Exception {                                     Logger.getLogger(XmppReceiver.class).info("success!"+ header("foo").isEqualTo("bar"));                                     e.getOut().setBody(e.getIn().getBody());                                 }                             }).to("direct:start");                     //选择的方式,如果被其中一个when选中,就不再往下走了。                     from("direct:start").choice()                             .when(new MessageFilter(body())).to("direct:a")                             .when(new MessageFilter(body())).to("direct:b")                             .otherwise().to("direct:c") ;                                         from("direct:a").process(new Processor() {                         public void process(Exchange arg0) throws Exception {                             Logger.getLogger(XmppReceiver.class).info("To direct:a");                             }                     });                     from("direct:b").process(new Processor() {                         public void process(Exchange arg0) throws Exception {                             Logger.getLogger(XmppReceiver.class).info("To direct:b");                             }                     });                     from("direct:c").process(new Processor() {                         public void process(Exchange arg0) throws Exception {                             Logger.getLogger(XmppReceiver.class).info("To direct:c");                         }                     });                 }             });             context.start();             Logger.getLogger(XmppReceiver.class).info("success!");         } catch (Throwable ex) {             ex.printStackTrace();         }     } }

转载请注明原文地址: https://www.6miu.com/read-5015212.html

最新回复(0)