我使用ApacheCamel在ActiveMQ和camel HTTPendpoint之间进行路由。路由的定义方式是,将数据从camel cxf webservice传输到ActiveMQ,并将这些数据发送到tomcat,tomcat是一个HTTPendpoint,然后一旦HTTP uri命中,camel就会从tomcat服务器获得响应。
只有在成功路由后,我们才能从骆驼那里确认队列,我的意思是在LOG_log_4过程完成后确认AMQ吗?如果这是可能的,那么我可以在队列中没有任何数据丢失的情况下进行路由,即使超文本传输协议链路中断了。
我发现这个链接JMSACKNOWLEDGE_MODE。如果我需要使用确认模式CLIENT_ACKNOWLEDGE那么我需要在tomcat网络应用网站上写消费者服务来确认msg收到成功。
我使用Acknowledgemodename作为自动确认。
详细路线图如下:-
Spring DSL应用程序上下文。xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:cxf="http://camel.apache.org/schema/cxf"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
<cxf:rsServer address="http://localhost:9000/employeeservice"
id="restService" serviceClass="com.javainuse.beans.EmployeeServiceResource"/>
<bean class="com.javainuse.beans.CamelProcessor" id="processor"/>
<bean class="com.javainuse.beans.CamelAMQResponseProcessor" id="camelAMQResponseProcessor"/>
<camelContext id="camelId" xmlns="http://camel.apache.org/schema/spring">
<camel:route id="_route1">
<camel:from id="_fromrest_1" uri="cxfrs://bean://restService"/>
<camel:process id="_processrest_1" ref="processor"/>
<camel:to id="_to1" uri="amq:queue:queue1x"/>
<camel:log id="_log1" message="hit ws route 1"/>
</camel:route>
<camel:route id="_route2">
<camel:from id="_from2" uri="amq:queue:queue1x?concurrentConsumers=2"/>
<camel:log id="_log2" message="hit amq route 2"/>
<camel:log id="_log3" message="Message returned from the queue is ${body}"/>
<camel:setBody id="_setBody2">
<simple>${body}</simple>
</camel:setBody>
<setHeader headerName="CamelHttpMethod" id="_setHeader1">
<constant>PUT</constant>
</setHeader>
<setHeader headerName="Cookie" id="_setHeader2">
<constant>JSESSIONID=Z2rLMNdkmpz72nG2FTj5SuLHn_rbZxHzs7wbw3LG</constant>
</setHeader>
<setHeader headerName="Authorization" id="_setHeader3">
<constant>eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJQQVNTV09SRC9hcHBhZG1pbiIsImF1dGgiOiJERUYtcm9sZS1hcHBhZG1pbiIsImV4cCI6MTUzNTQzNjg3Mn0.AqfYVoAFsh6XDiIGGVO8lRpGyb1HcdP2HN1rUWtfDbYNJ6rdsnLnT5nrqmtPSR7YfUui7pWKxEF96NcLKppQAg</constant>
</setHeader>
<camel:to id="_to2" uri="http:localhost:8080/api/outboundmsg/"/>
<camel:log id="_log4" message="Message returned from iConnect is ${body} with header ${in.headers.CamelHttpResponseCode}"/>
</camel:route>
</camelContext>
</beans>
ActiveMQ配置应用程序Context-mq.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:cxf="http://camel.apache.org/schema/cxf"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf-2.8.3.xsd">
<bean class="org.apache.activemq.camel.component.ActiveMQComponent" id="amq">
<property name="connectionFactory" ref="singleCF"/>
<property name="useSingleConnection" value="true"/>
<property name="usePooledConnection" value="false"/>
<property name="preserveMessageQos" value="true"/>
<property name="acknowledgementModeName" value="AUTO_ACKNOWLEDGE"></property>
</bean>
<bean
class="org.springframework.jms.connection.SingleConnectionFactory" id="singleCF">
<property name="targetConnectionFactory" ref="AMQCF"/>
</bean>
<bean class="org.apache.activemq.ActiveMQConnectionFactory" id="AMQCF">
<property name="userName" value="admin"/>
<property name="password" value="admin"/>
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
init-method="start" destroy-method="stop">
<property name="maxConnections" value="8" />
<property name="connectionFactory" ref="AMQCF" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="pooledConnectionFactory" />
</bean>
</beans>
提前谢谢你。
一旦消费者消费了确认书,经纪人就会收到确认书。i、 e.在你的情况下
您的需求不清楚,但是如果需要在队列上实现请求-应答,可以将replyTo参数设置为queue,并将从tomcat收到的应答推送到该replyTo队列。或者,让我知道确切的要求。
我正在使用Apache Camel将数据从CSV文件加载到webservice。我是否可以显示请求和响应。以下是路线配置。。 我从数组中拆分并聚合100个项目,以作为邮件正文发送。 请让我知道如何使用上述路线显示请求和响应?
问题内容: 我已经编写了一个函数,希望在提交表单之前显示确认消息。我应该如何添加我的条件。下面是我的代码。 问题答案: 解决方案是使用ajax属性。 beforeSend是发送之前的请求前回调函数.beforeSend函数中返回false将取消请求。 AJAX
我有客户通过不同的方式发送请求,比如web请求、http请求、soap请求或其他渠道。 在 Camel 中,我从各自的endpoint接收它到 jms 队列。从队列处理器拾取消息。现在处理器需要根据客户端的偏好(它们在传入请求中发送)向客户端发送确认。偏好可以是他们希望通过Web服务或JMS或文件系统接收确认。 我认为它可以以某种方式完成 http://camel.apache.org/reque
主要内容:HTTP请求完整格式HTTP请求完整格式 HTTP请求由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求示例: ①是请求方法,HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。 ②为请求对应的URL地址,它和报文头的Hos
获取请求 要通过依赖注入的方式来获取当前 HTTP 请求的实例,你应该在控制器方法中引入 Illuminate\Http\Request 类。传入的请求实例将通过 服务容器 自动注入: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controll
Blade 支持注解的方式或者使用 Request 对象获取请求信息。 表单参数 先看看 Request 提供的操作表单参数的API Optional<String> query(String name) Optional<Integer> queryInt(String name) Optional<Long> queryLong(String name) Optional<Double> qu