小编Son*_*123的帖子

如何使用Kafka(超过15MB)发送大量邮件?

我使用Java Producer API将String-messages发送到Kafka V. 0.8.如果邮件大小约为15 MB,我会得到一个MessageSizeTooLargeException.我试图设置message.max.bytes为40 MB,但我仍然得到例外.小消息没有问题.

(例外情况出现在制作人中,我在此应用程序中没有使用者.)

我该怎么做才能摆脱这种异常?

我的示例生产者配置

private ProducerConfig kafkaConfig() {
    Properties props = new Properties();
    props.put("metadata.broker.list", BROKERS);
    props.put("serializer.class", "kafka.serializer.StringEncoder");
    props.put("request.required.acks", "1");
    props.put("message.max.bytes", "" + 1024 * 1024 * 40);
    return new ProducerConfig(props);
}
Run Code Online (Sandbox Code Playgroud)

错误日志:

4709 [main] WARN  kafka.producer.async.DefaultEventHandler  - Produce request with correlation id 214 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
4869 [main] WARN  kafka.producer.async.DefaultEventHandler  - Produce request with    correlation id 217 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
5035 [main] WARN  kafka.producer.async.DefaultEventHandler  - Produce …
Run Code Online (Sandbox Code Playgroud)

java apache-kafka

95
推荐指数
7
解决办法
10万
查看次数

在Mongoose中使用AND组合两个OR查询

我想在Monoose中将两个OR查询与AND组合在一起,就像在这个SQL语句中一样:

SELECT * FROM ... WHERE (a = 1 OR b = 1) AND (c=1 OR d=1)
Run Code Online (Sandbox Code Playgroud)

我在NodeJS模块中尝试了这个,它只从主应用程序中获取模型对象:

/********** Main application ***********/
var query = MyModel.find({});
myModule1.addCondition(query);
myModule2.addCondition(query);
query.exec(...)

/************ myModule1 ***************/
exports.addCondition = function(query) {
  query.or({a: 1}, {b: 1});
}

/************ myModule2 ***************/
exports.addCondition = function(query) {
  query.or({c: 1}, {d: 1});
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,所有OR条件将像在此SQL语句中一样连接在一起:

SELECT * FROM ... WHERE a = 1 OR b = 1 OR c=1 OR d=1
Run Code Online (Sandbox Code Playgroud)

如何在Mongoose中结合AND myModule1myModule2AND 的两个条件?

mongoose mongodb node.js

78
推荐指数
1
解决办法
9万
查看次数

如何执行bash脚本作为sbt任务?

我想自动为我的Java Play 2.3应用程序构建文档.目前,我使用Makefile从*.dot文件生成图像,并将Markdown源合并为Html/PDF:

dot diagram1.dot -Tpdf -o diagram1.pdf
dot diagram2.dot -Tpdf -o diagram2.pdf
pandoc doc1.markdown -o doc1.pdf
# ...
Run Code Online (Sandbox Code Playgroud)

现在我想直接从SBT运行这些简单的bash命令.最好的方法是什么?

我在SBT参考中找到了一些SBT Documentation插件,但没有任何东西可以运行简单的shell脚本.

sbt

28
推荐指数
2
解决办法
2万
查看次数

使用Mongoose处理错误

我是一个绝对的NodeJS初学者,想要用Express和Mongoose创建一个简单的REST-Web服务.

什么是在一个中心位置处理猫鼬错误的最佳做法?

当发生数据库错误的任何地方时,我想返回一个带有错误消息的Http-500-Error-Page:

if(error) {
  res.writeHead(500, {'Content-Type': 'application/json'});
  res.write('{error: "' + error + '"}');
  res.end();
}
Run Code Online (Sandbox Code Playgroud)

在旧教程http://blog-next-stage.learnboost.com/mongoose/中我读到了一个全局错误监听器:

Mongoose.addListener('error',function(errObj,scope_of_error));
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,我在Mongoose官方文档中找不到关于这个监听器的东西.我是否在每次Mongo请求后检查错误?

rest error-handling mongoose

27
推荐指数
2
解决办法
2万
查看次数

Play应用程序中测试的资源目录

我需要一些Scala Play 2.0应用程序中的测试资源(文本文件).我在哪里可以放这些文件?

在maven应用程序中,我会将它们放入src/test/resources,但我在Play文档中找不到有关同等目录的任何内容.

我可以将它们放在conf目录中,但我在测试应用程序时只需要它们.

scala sbt playframework playframework-2.0

24
推荐指数
1
解决办法
5579
查看次数

Hocon:从配置文件中读取对象数组

我已经创建了使用配置在播放应用(2.1)conf/application.confHocon格式.

我想在配置中添加一系列项目.该文件conf/application.conf如下所示:

...
projects = [
  {name: "SO", url: "http://stackoverflow.com/"},
  {name: "google", url: "http://google.com"}
]
Run Code Online (Sandbox Code Playgroud)

我尝试在Scala项目中阅读此配置:

import scala.collection.JavaConversions._
case class Project(name: String, url: String)

val projectList: List[Project] =
  Play.maybeApplication.map{x =>
    val simpleConfig = x.configration.getObjectList("projects").map{y =>
      y.toList.map{z =>
        Project(z.get("name").toString, z.get("url").toString) // ?!? doesn't work

      ... 
   }}}}}}}}  // *arg*
Run Code Online (Sandbox Code Playgroud)

这种方法似乎非常复杂,我很多都丢失了Options,而且我的Eclipse IDE无法给出任何关于类的提示.

有没有人举例说明如何从Hocon配置文件中读取对象数组?或者我应该使用带有JSON解析器而不是Hocon的JSON文件?

configuration json scala playframework playframework-2.1

15
推荐指数
1
解决办法
1万
查看次数

使用Play 2对URL进行编码

如何使用Play 2在模板中编码URL?

我搜索一个这样的帮手:

<a href="@urlEncode(name)">urlEncode doesn't work now</a>
Run Code Online (Sandbox Code Playgroud)

我找到了一个pull请求,但这似乎不适用于实际的play 2.0.3版本.

urlencode playframework playframework-2.0

14
推荐指数
2
解决办法
1万
查看次数

猫鼬:计算删除文件

如何检查Mongoose模型的remove-method是否真的删除了某些东西?

MyModel.remove({_id: myId}, function(err, entry) {
  if(entry == null) next(new Error("ID was not found."));    // this doesn't work
}
Run Code Online (Sandbox Code Playgroud)

我可以查看删除了多少文件?

Mongo-Documentation kristina1中写下评论:

如果在删除后调用db.runCommand({getLastError:1}),则"n"字段将告诉您删除了多少文档.

但我不知道如何用Mongoose做到这一点.

mongoose node.js

11
推荐指数
1
解决办法
6667
查看次数

NextJS:初始化一个对象一次

我使用 NextJS 生成静态页面列表。

所有页面都需要一个大的静态 Javascript 对象,该对象需要几分钟来初始化(它包含解析许多其他文件的结果)。


const bigData = initializeBigData();   // <- called for every page, instead once

export async function getStaticProps({ params }) {
  return { bigData[params.slug] };  // ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到一次初始化该数据对象的方法。initializeBigData()相反,每次创建页面时都会运行缓慢,这使得构建非常慢。

我尝试过以下操作:

  • 使用模块作为单例
  • 使用 ES6 类单例
  • 使用一次npm 包
  • 将构建线程减少到 1:npm run build --threads=1

initializeBigData()所有这些都没有改变,在构建网站时,每个页面都会调用long 。

如果可能的话,我不想使用自定义服务器。

如何在 NextJS 项目的构建过程中只初始化一次对象?

singleton next.js

10
推荐指数
1
解决办法
1万
查看次数

使用JGit提交字符串

一个JGit-初学者问题:

我使用JGit从存储库中读取文件(BLOB)并操纵其内容.之后,我想将具有相同文件名的新内容作为新提交写回存储库.但是如何使用JGit提交新内容?

我的伪代码:

String gitUrl = "path/to/repository/.git";
Repository repository = new FileRepository(gitUrl);
String filename = "test/seppl.txt";
blobId = getIdOf(filename);
ObjectLoader object = repository.open(blobId, Constants.OBJ_BLOB);
ObjectStream is = object.openStream();
String newContent = processStream(is);
// How to commit the newContent in filename?
Run Code Online (Sandbox Code Playgroud)

我是否必须将newContent文件写入文件并使用AddCommandCommitCommand提交此文件?或者我可以使用相同的文件名将"即时"字符串写入存储库吗?

Web中是否有任何例子如何使用JGit进行提交?

java jgit

8
推荐指数
1
解决办法
1323
查看次数