小编Ame*_* A.的帖子

具有基于Java的配置的Spring Batch的可跳过异常类

我在XML中配置一个步骤,如下所示:

<batch:step id="slaveStep">
        <batch:tasklet>
            <batch:chunk
                    reader="reader"
                    processor="processor"
                    writer="writer"
                    commit-interval="10"
                    skip-limit="100000">
                <batch:skippable-exception-classes>
                    <batch:include class="MyException"/>
                </batch:skippable-exception-classes>
            </batch:chunk>
        </batch:tasklet>
    </batch:step>
Run Code Online (Sandbox Code Playgroud)

在java配置中,我使用这样的StepBuilder:

@Bean
public StepBuilder stepBuilder(String stepName)
{
    return new StepBuilder(stepName);
}

@Bean
Step slaveStep()
{
    return stepBuilder("slaveStep")
            .<Movie, Movie>chunk(10)
            .reader(reader(new HashMap<>()))
            .processor(processor())
            .writer(writer())
            .build();
}
Run Code Online (Sandbox Code Playgroud)

但我找不到配置可跳过的异常类的方法

java spring spring-batch spring-java-config

12
推荐指数
1
解决办法
9540
查看次数

动态配置消息驱动Bean中的MappedName注释

使用消息驱动Bean时,在注释中硬编码接收消息的目标名称 @MessageDriven(mappedName = "someDestinationName")

有没有办法在运行时添加此信息?Bellow是Message Driven Bean类的示例.

package mdb.beans;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;

@MessageDriven(mappedName = "someDestinationName", activationConfig =
{
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue =   "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class MDBSample implements MessageListener 
{    
    public MDBSample() 
    {
        // constructor
    }

    @Override
    public void onMessage(Message message) 
    {
        // logic when message received
    }
}
Run Code Online (Sandbox Code Playgroud)

java annotations java-ee message-driven-bean ejb-3.0

6
推荐指数
1
解决办法
2294
查看次数

字段上的@ConfigurationProperties

使用定义属性时@ConfigurationProperties,可以定义特定字段的前缀而不是整个类吗?

例如,假设我们有一个Properties类

@ConfigurationProperties(prefix = "com.example")
public class MyProperties {
    private String host;
    private String port;
    // Geters and setters...
}
Run Code Online (Sandbox Code Playgroud)

这会将字段host和绑定portcom.example.hostcom.example.port。假设我要绑定portcom.example.something.port。完成此操作的方法是定义一个Inner类Something并在其中添加属性port。但是,如果我需要更多的前缀,它将变得很麻烦。我尝试添加@ConfigurationProperties设置器,因为注释的目标是ElementType.TYPEElementType.METHOD

@ConfigurationProperties(prefix = "com.example.something.port")
public void setPort(int port) {...}
Run Code Online (Sandbox Code Playgroud)

但这最终没有用。除了通过内部类之外,还有另一种自定义前缀的方法吗?

java properties spring-boot

5
推荐指数
1
解决办法
3140
查看次数

如何确认消息驱动Bean中的消息

在JMS文档中,我读到Message Driven Beans不支持CLIENT_ACKNOWLEDGE模式,仅DUPS_OK_ACKNOWLEDGEAUTO_ACKNOWLEDGE.

据我所知,在AUTO_ACKNOWLEDGE模式下,当调用onMessage方法时,消息被确认(从目标中删除).我想要的是告诉我的经纪人在发生不良事件时不要从目的地(队列或主题)删除消息

必须有一些方法来做到这一点.无论如何,为什么CLIENT_ACKNOWLEDGEMessage Drven Beans不支持.

java jms message-driven-bean

3
推荐指数
1
解决办法
3059
查看次数