如何在apache camel的google邮件组件中为消费者设置所需的参数

时间:2016-07-23 13:10:16

标签: java apache-camel gmail-api

我正在尝试使用骆驼google-mail component从我的帐户中获取最新邮件。具体来说,我使用history端点前缀和列表端点。我的路线看起来像这样

<route id="parseNewMails">
        <from uri="g-mail://history/list?userId=me&amp;consumer.delay=10000"/>
        <!-- <setHeader headerName="CamelGoogleMail.startHistoryId">
            <constant>2938321</constant>
        </setHeader> -->
        <to uri="file://output1"/>
</route>

Google Mail Api指定我可以使用startHistoryIdlabelId等参数来控制输出。但是,我如何在URI中传递它们?



<from uri="g-mail://history/list?userId=me&amp;CamelGoogleMail.startHistoryId=291234&amp;consumer.delay=10000"/>

OR

<from uri="g-mail://history/list?userId=me&amp;startHistoryId=291234&amp;consumer.delay=10000"/>

不起作用。它抛出了这个错误:

 Failed to resolve endpoint: g-mail://history/list?CamelGoogleMail.startHistoryId=2938321&consumer.delay=10000&userId=me due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{CamelGoogleMail.startHistoryId=2938321}]

修改 :: 我已经添加了所需的依赖项

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-google-mail</artifactId>
    <version>2.17.2</version>
</dependency>

并配置组件

<bean id="g-mail" class="org.apache.camel.component.google.mail.GoogleMailComponent">
    <property name="configuration">
        <bean class="org.apache.camel.component.google.mail.GoogleMailConfiguration">
            <property name="accessToken" value="xxx" />
            <property name="applicationName" value="Simple Sample" />
            <property name="clientId" value="xxx" />
            <property name="clientSecret" value="xxx" />
            <property name="refreshToken" value="xxx" />
            <property name="scopes" value="https://www.googleapis.com/auth/gmail.readonly,https://www.googleapis.com/auth/gmail.modify,https://www.googleapis.com/auth/gmail.labels" />
            <!-- <property name="p12FileName" value="" />
            <property name="user" value="" /> -->
        </bean>
    </property>
</bean>

请注意,历史记录前缀和列表端点有效。它只是我不能指定startHistoryId参数。

1 个答案:

答案 0 :(得分:0)

请在camel标头中设置startHistoryId的值。它应该工作。

  

可以在producer的消息头中提供任何URI选项   使用CamelGoogleMail的端点。前缀。