- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 JSON 响应被发布到我的 activemq 主题。我已经设置了我的路由来解码这个对 POJO 的响应。然后,我想连续执行 3 种不同的方法,这些方法利用 JSON 对象填充的 POJO 中的字段。
这基本上就是我想要做的。我的问题在于我还是 Camel 的新手,我不确定应该如何/如何将路由中的信息传递到我的方法中,以便我可以使用由 JSON 值填充的 POJO .
如果这有任何意义的话。我将在下面发布我的 Camel Route 和 Java 类,我将推迟 pojo,因为它很简单,只有 10 个字段在 int 和 string 之间变化,并带有一些 getter/setter 方法。
注册回复 是 POJO 的名称。
任何帮助或指导/提示将不胜感激!
编辑/更新:
在 Eclipse 的控制台中,我从我的“设置”方法中获取了 Sys,所以我知道它至少已经到了那一步。在我的日志中,虽然这是错误开始的地方:
15:38:11,919 调试 [读取 #0 - JmsConsumer[Test.Central]] SendProcessor : >>>> Endpoint[bean://TriggeredSendBean?method=setup] Exchange[JmsMessage[JmsMessageID: ID:LT_John-51650-1363715888983- 3:2:1:1:1]]
15:38:12,396 信息 [读取 #0 - JmsConsumer[Test.Central]] ReflectionServiceFactoryBean:创建服务 { http://testAPI.com/wsdl/partnerAPI } 来自 WSDL 的 PartnerAPI:file:resources/META-INF/framework.wsdl
15:38:13,159 DEBUG [读取 #0 - JmsConsumer [Test.Central]] DefaultErrorHandler:(MessageId:topic_Test.Central_ID_LT_John-51650-1363715888983-3_2_1_1_1 在 ExchangeId 上的传递失败:ID-LT-John-52743-1363721881958-0- 1)。交付尝试:0 捕获:org.apache.camel.CamelExecutionException:在交易所执行期间发生异常:Exchange[JmsMessage[JmsMessageID: ID:LT_John-51650-1363715888983-3:2:1:1:1]]
15:38:13,160 错误 [读取 #0 - JmsConsumer [Test.Central]] DefaultErrorHandler:ExchangeId 上的(MessageId:topic_Test.Central_ID_LT_John-51650-1363715888983-3_2_1_1_1 的传递失败:ID-LT-John-52743-1363721881958-0- 1)。交付尝试后用尽:1 捕获:org.apache.camel.CamelExecutionException:在交易所执行期间发生异常:Exchange[JmsMessage[JmsMessageID:ID:LT_John-51650-1363715888983-3:2:1:1:1]]
org.apache.camel.CamelExecutionException:在交易所执行期间发生异常:Exchange[JmsMessage[JmsMessageID: ID:LT_John-51650-1363715888983-3:2:1:1:1]]
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<!-- load properties -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="file:backend.properties" />
</bean>
<bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent">
<property name="location" value="file:backend.properties" />
</bean>
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://0.0.0.0:61616?useLocalHost=true" />
</bean>
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="maxConnections" value="8" />
<property name="maximumActive" value="500" />
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="pooledConnectionFactory" />
<property name="transacted" value="false" />
<property name="concurrentConsumers" value="1" />
</bean>
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="jmsConfig" />
</bean>
<!-- Custom Loaded Beans -->
<bean id="TriggeredSendBean" class="com.backend.trigger.ClientTest"/>
<bean id="EnrollResponse" class="com.testObjects.EnrollResponse" />
<!-- camel configuration -->
<camel:camelContext xmlns="http://camel.apache.org/schema/spring">
<camel:dataFormats>
<json id="UnmarshalToPOJO" library="Jackson" unmarshalTypeName="com.testObjects.EnrollResponse" />
</camel:dataFormats>
<camel:route id="genericMessageHandler" streamCache="true">
<from uri="activemq:topic:Test.Central" />
<unmarshal ref="UnmarshalToPOJO" />
<to uri = "bean:TriggeredSendBean?method=setup" />
<to uri = "bean:TriggeredSendBean?method=addSubscriberAllList" />
<to uri = "bean:TriggeredSendBean?method=sendWelcomeEmail" />
</camel:route>
</camel:camelContext>
public class ClientTest
{
static String user = null;
static String password = null;
static String customerKeyWelcomeEmailTest = null;
static String validFromAddress = null;
static String validFromName = null;
public static void setup(Exchange exchange)
{
System.out.println("Exchange " + exchange.toString());
//Retrieve settings from properties file
Properties properties = getProperties();
user = properties.getProperty("user");
password = properties.getProperty("password");
customerKeyWelcomeEmailTest = properties.getProperty("customerKeyWelcomeEmailTest");
validFromAddress = properties.getProperty("validFromAddress");
validFromName = properties.getProperty("validFromName");
System.out.println("user==> " + user);
System.out.println("password==> " + password);
System.out.println("customerKey==> " + customerKeyWelcomeEmailTest);
System.out.println("validFromAddress==> " + validFromAddress);
System.out.println("validFromName==> " + validFromName);
//Create PartnerAPI stub.
PartnerAPI service = new PartnerAPI();
Soap stub = service.getSoap();
}
/**
* Adding specific subscriber to the "All subscribers" list in
*/
private static void addSubscriberAllList(Soap stub, Exchange exchange, EnrollResponse enrollResponse)
{
// Checking to see if enrollResponse is being populated
System.out.println(enrollResponse.getEmail());
System.out.println(enrollResponse.getFirstname());
System.out.println(enrollResponse.getLastname());
System.out.println(enrollResponse.getAcctid());
System.out.println(enrollResponse.getCid());
System.out.println(enrollResponse.getMyfridays());
System.out.println(enrollResponse.getPhone());
System.out.print(enrollResponse.getPoints());
Subscriber subscriber = new Subscriber();
subscriber.setEmailAddress(enrollResponse.getEmail());
subscriber.setSubscriberKey(enrollResponse.getAcctid());
subscriber.setStatus(SubscriberStatus.ACTIVE);
Attribute a1 = new Attribute();
a1.setName("firstname");
a1.setValue(enrollResponse.getFirstname());
//Can add more attributes as needed
Attribute[] AttributeLists = {a1};
subscriber.getAttributes().addAll(Arrays.asList(AttributeLists));
APIObject[] apiObjects = {subscriber};
try
{
CreateRequest createRequest = new CreateRequest();
createRequest.setOptions(new CreateOptions());
createRequest.getObjects().addAll(Arrays.asList(apiObjects));
CreateResponse createResponse = stub.create(createRequest);
System.out.println("Subscriber created in all subscriber List: " + createResponse.getOverallStatus());
} catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Testing Triggered Send SPECIFIC SUBSCRIBER
*/
private static void sendWelcomeEmail(Soap stub, Exchange exchange, EnrollResponse enrollResponse)
{
Subscriber[] testArray = new Subscriber[1];
Owner ownerSubscriberValid = new Owner();
System.out.println("****************** STARTING TRIGGERED SEND TEST ******************");
//Specify TriggeredSendDefinition and initialize the TriggeredSend
TriggeredSendDefinition triggeredSendDefinition = new TriggeredSendDefinition();
triggeredSendDefinition.setCustomerKey(customerKeyWelcomeEmailTest);
TriggeredSend triggeredSend = new TriggeredSend();
triggeredSend.setTriggeredSendDefinition(triggeredSendDefinition);
//Create a valid Subscriber
Subscriber subscriberValid = new Subscriber();
subscriberValid.setEmailAddress(enrollResponse.getEmail());
subscriberValid.setSubscriberKey(enrollResponse.getAcctid());
ownerSubscriberValid.setFromAddress(validFromAddress);
ownerSubscriberValid.setFromName(validFromName);
subscriberValid.setOwner(ownerSubscriberValid);
//Populate array of Subscribers
testArray[0] = subscriberValid;
java.util.List<Subscriber> list = Arrays.asList(testArray);
triggeredSend.getSubscribers().addAll( list );
//Send the TriggeredSend using Create call
try{
CreateRequest createRequest = new CreateRequest();
CreateOptions createOptions = new CreateOptions();
createRequest.setOptions(createOptions);
java.util.List<APIObject> listAPIObject = Arrays.asList(new APIObject[] {triggeredSend});
createRequest.getObjects().addAll(listAPIObject);
CreateResponse createResponse = stub.create(createRequest);
System.out.println( "overall status message: " + createResponse.getOverallStatus() );
java.util.List<CreateResult> listCreateResult = createResponse.getResults();
CreateResult[] createResult = listCreateResult.toArray(new CreateResult[listCreateResult.size()]);
for ( CreateResult status : createResult )
{
System.out.println("create status message: " + status.getStatusMessage());
System.out.println("create status code: " + status.getStatusCode());
}
//Validate the send and get failure information
TriggeredSendCreateResult triggeredSendCreateResult = (TriggeredSendCreateResult)createResult[0];
assert(triggeredSendCreateResult.getSubscriberFailures() != null);
System.out.println("size of failures array: " + triggeredSendCreateResult.getSubscriberFailures().size());
System.out.println("email address: " + triggeredSendCreateResult.getSubscriberFailures().get(0).getSubscriber().getEmailAddress());
System.out.println("error description: " + triggeredSendCreateResult.getSubscriberFailures().get(0).getErrorDescription());
System.out.println("error code: " + triggeredSendCreateResult.getSubscriberFailures().get(0).getErrorCode());
assert( createResult != null );
assert(createResult[0].getStatusMessage().equals("OK"));
System.out.println( "****************** ENDING TRIGGERED SEND TEST ******************" );
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* Retrieve properties file.
*
*/
public static Properties getProperties()
{
Properties properties = new Properties();
try{
FileInputStream fileInputStream = new FileInputStream("properties.xml");
properties.loadFromXML(fileInputStream);
} catch (Exception e){
e.printStackTrace();
}
return properties;
}
最佳答案
Camel 具有强大的 bean 集成,在 Camel 网站上有很多关于此的文档,例如其中一些链接
关于json - Camel Route/ActiveMQ 解码 JSON 并发送到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509608/
最近开始学习MongoDB。今天老师教了我们 mongoexport 命令。在练习时,我遇到了一个典型的问题,包括教练在内的其他同学都没有遇到过。我在我的 Windows 10 机器上使用 Mongo
我是 JSON Schema 的新手,读过什么是 JSON Schema 等等。但我不知道如何将 JSON Schema 链接到 JSON 以针对该 JSON Schema 进行验证。谁能解释一下?
在 xml 中,我可以在另一个 xml 文件中包含一个文件并使用它。如果您的软件从 xml 获取配置文件但没有任何方法来分离配置,如 apache/ngnix(nginx.conf - site-av
我有一个 JSON 对象,其中包含一个本身是 JSON 对象的字符串。我如何反序列化它? 我希望能够做类似的事情: #[derive(Deserialize)] struct B { c: S
考虑以下 JSON { "a": "{\"b\": 12, \"c\": \"test\"}" } 我想定义一个泛型读取 Reads[Outer[T]]对于这种序列化的 Json import
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 11 个月前关闭。 Improve
我的旧项目在 MySQL 中有 Standard JSON 格式的数据。 对于我在 JS (Node.js) 和 DynamoDB 中的全新项目,关于 Standard JSON格式: 是否建议将其转
JSON 值字符串、数字、true、false、null 是否是有效的 JSON? 即,是 true 一个有效的 JSON 文档?还是必须是数组/对象? 一些验证器接受这个(例如 http://jso
我有一个 JSON 字符串,其中一个字段是文本字段。这个文本字段可以包含用户在 UI 中输入的文本,如果他们输入的文本是 JSON 文本,也许是为了说明一些编码,我需要对他们的文本进行编码,以便它不会
我正在通过 IBM MQ 调用处理数据,当由 ColdFusion 10 (10,0,11,285437) 序列化时,0 将作为 +0.0 返回,它会导致无效的 JSON并且无法反序列化。 stPol
我正在从三个数组中生成一个散列,然后尝试构建一个 json。我通过 json object has array 成功了。 require 'json' A = [['A1', 'A2', 'A3'],
我从 API 接收 JSON,响应可以是 30 种类型之一。每种类型都有一组唯一的字段,但所有响应都有一个字段 type 说明它是哪种类型。 我的方法是使用serde .我为每种响应类型创建一个结构并
我正在下载一个 JSON 文件,我已将其检查为带有“https://jsonlint.com”的有效 JSON 到文档目录。然后我打开文件并再次检查,结果显示为无效的 JSON。这怎么可能????这是
我正在尝试根据从 API 接收到的数据动态创建一个 JSON 对象。 收到的示例数据:将数据解码到下面给出的 CiItems 结构中 { "class_name": "test", "
我想从字符串转换为对象。 来自 {"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \"value4\"\n }\n
目前我正在使用以下代码将嵌套的 json 转换为扁平化的 json: import ( "fmt" "github.com/nytlabs/gojsonexplode" ) func
我有一个使用来自第三方 API 的数据的应用程序。我需要将 json 解码为一个结构,这需要该结构具有“传入”json 字段的 json 标签。传出的 json 字段具有不同的命名约定,因此我需要不同
我想使用 JSON 架构来验证某些值。我有两个对象,称它们为 trackedItems 和 trackedItemGroups。 trackedItemGroups 是组名称和 trackedItem
考虑以下案例类模式, case class Y (a: String, b: String) case class X (dummy: String, b: Y) 字段b是可选的,我的一些数据集没有字
我正在存储 cat ~/path/to/file/blah | 的输出jq tojson 在一个变量中,稍后在带有 JSON 内容的 curl POST 中使用。它运作良好,但它删除了所有换行符。我知
我是一名优秀的程序员,十分优秀!