代码:
public void eventHubs() throws EventHubException, ExecutionException, InterruptedException, IOException {
final ConnectionStringBuilder connStr = new ConnectionStringBuilder()
.setNamespaceName("---value---")
.setEventHubName("---value---")
.setSasKeyName("---value---")
.setSasKey("---value---");
final Gson gson = new GsonBuilder().create();
// The Executor handles all asynchronous tasks and this is passed to the EventHubClient instance.
// This enables the user to segregate their thread pool based on the work load.
// This pool can then be shared across multiple EventHubClient instances.
// The following sample uses a single thread executor, as there is only one EventHubClient instance,
// handling different flavors of ingestion to Event Hubs here.
final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
// Each EventHubClient instance spins up a new TCP/SSL connection, which is expensive.
// It is always a best practice to reuse these instances. The following sample shows this.
final EventHubClient ehClient = EventHubClient.createSync(connStr.toString(), executorService);
try {
String data = 0.259848484 + "|" + 0.99999999999 + "|" + "2019/20/18T15:30";
System.out.println(data);
byte[] payloadBytes = gson.toJson(data).getBytes(Charset.defaultCharset());
EventData sendEvent = EventData.create(payloadBytes);
ehClient.sendSync(sendEvent);
System.out.println(Instant.now() + ": Send Complete...");
System.out.println("Press Enter to stop.");
} finally {
ehClient.closeSync();
executorService.shutdown();
}
}
错误:
I/c.iy.event_hub: NativeAlloc concurrent copying GC freed 1143(135KB) AllocSpace objects, 1(20KB) LOS objects, 52% free, 1380KB/2916KB, paused 894us total 321.619ms D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 1 0 I/Choreographer: Skipped 382 frames! The application may be doing too much work on its main thread. W/System.err: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". W/System.err: SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. W/System.err: com.microsoft.azure.eventhubs.EventHubException: Operation not permitted at com.microsoft.azure.eventhubs.impl.ExceptionUtil.toException(ExceptionUtil.java:60) at com.microsoft.azure.eventhubs.impl.MessagingFactory.onConnectionError(MessagingFactory.java:253) at com.microsoft.azure.eventhubs.impl.ConnectionHandler.onTransportError(ConnectionHandler.java:178) at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:191) W/System.err: at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108) at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324) at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291) at com.microsoft.azure.eventhubs.impl.MessagingFactory$RunReactor.run(MessagingFactory.java:507) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) I/Choreographer: Skipped 42 frames! The application may be doing too much work on its main thread. D/EGL_emulation: eglMakeCurrent: 0xf627eec0: ver 3 0 (tinfo 0xebbe5180) D/EGL_emulation: eglMakeCurrent: 0xf627eec0: ver 3 0 (tinfo 0xebbe5180)
这是你的问题:
跳过了382帧!应用程序可能在主线程上做了太多的工作。
您可以检查这个答案:应用程序可能在其主线程上做了太多工作
所以你需要把你的代码放到其他的线程上。你可以使用Async任务、线程、处理程序、执行器或许多其他工具。要检查这个,请尝试
new Thread(new Runnable() {
@Override
public void run() {
//put your code here
}
}).start();
至于logger的第二个问题:如果将来会存在,请将此添加到app gradle:
implementation 'log4j:log4j:1.2.17'
implementation 'de.mindpipe.android:android-logging-log4j:1.0.3'
创建记录器类:
class Logger {
static org.apache.log4j.Logger getLogger(Class clazz) {
final LogConfigurator logConfigurator = new LogConfigurator();
logConfigurator.setFileName(Environment.getExternalStorageDirectory().toString() + File.separator + "log/file.log");
logConfigurator.setRootLevel(Level.ALL);
logConfigurator.setLevel("org.apache", Level.ALL);
logConfigurator.setUseFileAppender(true);
logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");
logConfigurator.setMaxFileSize(1024 * 1024 * 5);
logConfigurator.setImmediateFlush(true);
logConfigurator.configure();
Logger log = Logger.getLogger(clazz);
return log;
}
}
在创建azure客户端之前,请添加以下内容:
ALogger.getLogger("YOUR_CLASS_NAME".class);
我想将发送到Azure服务总线主题的事件发送到事件中心。这可能吗? 详细信息:我与我公司的另一个团队合作,该团队接收Azure Service Bus主题的第三方事件(通过webhook),并在不同的应用程序中进一步使用。 我的团队现在希望使用我们现有的事件中心并使用Azure捕获将这些事件存储到存储帐户来收听/订阅此主题。 我做了以下工作: 我在他们的Azure服务总线中创建了他们主题的订阅。我
问题内容: 我是Rails和Web开发的新手。 我正在Matlab中生成一堆对象,我想将这些对象发送到我的Rails应用程序中的数据库中。谁能建议我该怎么做? 到目前为止,在Rails端,我已经为数据生成了基本的支架。我可以使用“ / myobjects / new”中的表单将对象添加到数据库中。 在Matlab端,我一直在尝试使用HTTP POST请求添加对象,如下所示: 这将失败,并将以下内容
我有一个片段,它打开一个对话框fragment来获取用户输入(一个字符串和一个整数)。我该如何将这两样东西送回碎片? 这是我的对话片段: 我需要在单击按钮之后和 以下是数据需要发送到的片段: 因此,一旦用户在Dialogfragment中选择日期,它必须返回月份和年份。 然后,按钮上的文本应更改为用户指定的月份和年份。
我是Azure函数的新手,我有Service Bus Queue Trigger Azure函数,每当消息被推到队列中时,它都会从Service Bus队列中提取数据,我希望将消息从Service Bus Queue Trigger Azure函数发送到持久函数,然后实现扇入/出逻辑。我不知道如何从Service Bus Queue Trigger Azure函数发送消息,或者是否有其他方法将消息
问题内容: 我正在做一个示例项目,其中我想将数据从iPhone发送到WatchKit。我不知道该怎么做。任何帮助将不胜感激。提前致谢 问题答案: 在AppDelegate中添加以下方法: 将此添加到Apple Watch Extension中的任何位置: 第一个函数将使用触发并回复参数中的字典。 开发人员论坛: https : //devforums.apple.com/message/10826
正如大家所知,我是JavaScript和Electron的完全初学者。 我想我已经找过大多数地方了,但我什么也没找到。 IDK怎么办 有什么建议吗?