java什么是spring集成中的AffinityThreadFactory错误消息?
这是适配器配置代码
private static final String THREAD_NAME_PREFIX = "PlainAdapterTaskScheduler";
private static final int PROCESS_SIZE = 200;
private static final int BACKLOG = 2 * 1024;
private static final long FIXED_RATE = 500;
@Value("${tcp.plain.inbound.port}")
private String inboundPort;
@Autowired
private EchoSerializer echoSerializer;
@Bean
public TcpReceivingChannelAdapter plainAdapter() {
TcpReceivingChannelAdapter adapter = new TcpReceivingChannelAdapter();
adapter.setConnectionFactory(plainServerFactory());
adapter.setOutputChannel(inputWithPlain());
return adapter;
}
@Bean
public TcpSendingMessageHandler plainHandler() {
TcpSendingMessageHandler handler = new TcpSendingMessageHandler();
handler.setConnectionFactory(plainServerFactory());
return handler;
}
@Bean
public AbstractConnectionFactory plainServerFactory() {
int port = Integer.parseInt(inboundPort);
TcpNioServerConnectionFactory factory = new TcpNioServerConnectionFactory(port);
factory.setBacklog(BACKLOG);
factory.setTaskExecutor(taskSchedulerWithPlain());
factory.setLookupHost(false);
factory.setSerializer(echoSerializer);
factory.setDeserializer(echoSerializer);
// Nagle's algorithm disabled
factory.setSoTcpNoDelay(true);
return factory;
}
@Bean
public Executor taskSchedulerWithPlain() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(PROCESS_SIZE);
scheduler.setThreadFactory(plainAffinityThreadFactory());
scheduler.setWaitForTasksToCompleteOnShutdown(true);
return scheduler;
}
private AffinityThreadFactory plainAffinityThreadFactory() {
return new AffinityThreadFactory(THREAD_NAME_PREFIX, SAME_CORE, DIFFERENT_SOCKET, ANY);
}
@Bean
public MessageChannel inputWithPlain() {
return MessageChannels.queue(PROCESS_SIZE).get();
}
@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata poller() {
return Pollers.fixedRate(FIXED_RATE).get();
}
操作服务,以及
如果测试出现,则显示以下消息
2016-10-14 14:07:28.679 DEBUG 10716 --- [task-scheduler-7] o.s.i.endpoint.PollingConsumer : Received no Message during the poll, returning 'false'
2016-10-14 14:07:28.682 DEBUG 10716 --- [task-scheduler-1] o.s.i.endpoint.PollingConsumer : Received no Message during the poll, returning 'false'
2016-10-14 14:07:28.875 WARN 10716 --- [PlainAdapterTaskScheduler-2] net.openhft.affinity.LockInventory : No reservable CPU for Thread[PlainAdapterTaskScheduler-2,5,main]
2016-10-14 14:07:28.879 DEBUG 10716 --- [PlainAdapterTaskScheduler-2] o.s.i.i.tcp.connection.TcpNioConnection : 192.168.2.93:49531:5001:713a1d01-3fdf-4965-a457-fcc3837b2adf Reading...
2016-10-14 14:07:28.882 DEBUG 10716 --- [PlainAdapterTaskScheduler-2] o.s.i.i.tcp.connection.TcpNioConnection : 192.168.2.93:49531:5001:713a1d01-3fdf-4965-a457-fcc3837b2adf Running an assembler
2016-10-14 14:07:28.886 DEBUG 10716 --- [PlainAdapterTaskScheduler-2] o.s.i.i.tcp.connection.TcpNioConnection : Read 1 into raw buffer
2016-10-14 14:07:28.889 WARN 10716 --- [PlainAdapterTaskScheduler-3] net.openhft.affinity.LockInventory : No reservable CPU for Thread[PlainAdapterTaskScheduler-3,5,main]
2016-10-14 14:07:29.014 DEBUG 10716 --- [PlainAdapterTaskScheduler-3] o.s.i.i.tcp.connection.TcpNioConnection : 192.168.2.93:49531:5001:713a1d01-3fdf-4965-a457-fcc3837b2adf Reading...
2016-10-14 14:07:29.022 DEBUG 10716 --- [PlainAdapterTaskScheduler-3] o.s.i.i.tcp.connection.TcpNioConnection : Read 242 into raw buffer
2016-10-14 14:07:29.024 WARN 10716 --- [PlainAdapterTaskScheduler-4] net.openhft.affinity.LockInventory : No reservable CPU for Thread[PlainAdapterTaskScheduler-4,5,main]
2016-10-14 14:07:29.217 DEBUG 10716 --- [PlainAdapterTaskScheduler-3] o.s.i.i.tcp.connection.TcpNioConnection : 192.168.2.93:49531:5001:713a1d01-3fdf-4965-a457-fcc3837b2adf Reading...
2016-10-14 14:07:29.220 DEBUG 10716 --- [PlainAdapterTaskScheduler-3] o.s.i.i.tcp.connection.TcpNioConnection : Read 49 into raw buffer
2016-10-14 14:07:29.227 DEBUG 10716 --- [PlainAdapterTaskScheduler-2] c.m.c.i.serializer.EchoSerializer : payload size is : 292
2016-10-14 14:07:29.229 WARN 10716 --- [PlainAdapterTaskScheduler-5] net.openhft.affinity.LockInventory : No reservable CPU for Thread[PlainAdapterTaskScheduler-5,5,main]
2016-10-14 14:07:29.298 DEBUG 10716 --- [PlainAdapterTaskScheduler-2] o.s.integration.channel.QueueChannel : preSend on channel 'inputWithPlain', message: GenericMessage [payload=byte[292], headers={ip_address=192.168.2.93, id=2ec06f67-f8e1-3645-f096-8748c566d7f3, ip_hostname=192.168.2.93, ip_tcp_remotePort=49531, ip_connectionId=192.168.2.93:49531:5001:713a1d01-3fdf-4965-a457-fcc3837b2adf, timestamp=1476421649296}]
警告信息是什么
为什么会出现此消息
[PlainAdapterTaskScheduler-2] net.openhft.affinity.LockInventory : No reservable CPU for Thread[PlainAdapterTaskScheduler-2,5,main]
windows和linux将这些消息恢复正常运行
但是,它不能正常运行
有没有人经历过同样的事情
多谢各位
# 1 楼答案
消息来自OpenHFT的Java线程关联类。还有一个问题似乎是一样的:https://github.com/OpenHFT/Java-Thread-Affinity/issues/3
彼得·劳瑞的回答是: