我能够在一台Linux机器上获得一个简单的单节点Kafka(kafka_2.11-0.8.2.1)本地工作,但是当我尝试远程运行生产者时,我遇到了一些令人困惑的错误.
我正在关注http://kafka.apache.org/documentation.html#quickstart上的快速入门指南.我停止了kafka进程并删除了/ tmp中的所有zookeeper和karma文件.我在本地10.0.0.0/24网络NAT-ed上有一个外部IP地址,所以我修改server.properties告诉zookeeper如何广播我的外部地址,按照https://medium.com/@thedude_rog/running-kafka- in-a-hybrid-cloud-environment-17a8f3cfc284:
advertised.host.name=MY.EXTERNAL.IP
Run Code Online (Sandbox Code Playgroud)
然后我运行这个:
$ bin/zookeeper-server-start.sh config/zookeeper.properties
--> ...
$ export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" # small test server!
$ bin/kafka-server-start.sh config/server.properties
--> ...
Run Code Online (Sandbox Code Playgroud)
我为远程计算机上的生产者打开了防火墙,并创建了一个新主题并对其进行了验证:
$ bin/kafka-topics.sh --create --zookeeper MY.EXTERNAL.IP:2181 --replication-factor 1 --partitions 1 --topic test123
--> Created topic "test123".
$ bin/kafka-topics.sh --list --zookeeper MY.EXTERNAL.IP:2181
--> test123
Run Code Online (Sandbox Code Playgroud)
但是,我正在远程运行的生产者给了我错误:
$ bin/kafka-console-producer.sh --broker-list MY.EXTERNAL.IP:9092 --topic test123
--> [2015-06-16 14:41:19,757] WARN Property topic is not valid (kafka.utils.VerifiableProperties)
My Test Message
--> [2015-06-16 14:42:43,347] WARN Error while fetching …Run Code Online (Sandbox Code Playgroud) 我想为运行光滑的服务编写一些集成测试,然后通过回滚事务清理postgresql数据库,但是我没有办法做到这一点.我知道我可以测试已经组合在一起的DBIO对象并将它们回滚,但是如果我想在更高的抽象级别进行测试,它看起来不太可能.
在伪代码中,我想这样做:
StartDbTransaction() // setup
DoSomethingInDB()
AssertSomething()
RollBackDbTransaction() // teardown
Run Code Online (Sandbox Code Playgroud)
例如,如果我有这个(从play-silhouette-slick-seeds中简化):
class PasswordInfoDAO(db: JdbcBackend#DatabaseDef) {
// ...
def remove(loginInfo: LoginInfo): Future[Unit] =
db.run(passwordInfoSubQuery(loginInfo).delete).map(_ => ())
}
Run Code Online (Sandbox Code Playgroud)
我以为我可以按照Specs2指南编写一个ForEach特性,这给出了一个通用的例子:
// a transaction with the database
trait Transaction
trait DatabaseContext extends ForEach[Transaction] {
// you need to define the "foreach" method
def foreach[R: AsResult](f: Transaction => R): Result = {
val transaction = openDatabaseTransaction
try AsResult(f(transaction))
finally closeDatabaseTransaction(transaction)
}
// create and close a transaction
def openDatabaseTransaction: Transaction = …Run Code Online (Sandbox Code Playgroud) 我正在为WebApi控制器实现AuthorizationFilterAttribute,但我似乎无法访问传递给控制器的参数:
在MVC4中,这很好用:
public class MyMVCController : Controller
{
[CanAccessMyResourceApi]
public MyViewModel Get(int id)
{
//...
}
}
public class CanAccessMyResourceMVCAttribute : CanAccessAttributeBase
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var param = filterContext.Controller.ValueProvider.GetValue("id")
/// ...
}
}
Run Code Online (Sandbox Code Playgroud)
但是在WebAPI中,我认为参数应该在ActionArguments中,但是这里的"param"是空的:
public class MyWebApiController : ApiController
{
[CanAccessMyResourceWebApi]
public MyViewModel Get(int id)
{
//...
}
}
public class CanAccessMyResourceWebApiAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext filterContext)
{
// the debugger shows that ActionArguments is empty:
var param = filterContext.ActionArguments["id"]
/// ...
} …Run Code Online (Sandbox Code Playgroud) 我有以下控制器,允许我使用以/api/v1/report/123.csv结尾的URL通过CSV下载文件:
[RoutePrefix("api/v{version:int?}/report")]
public class ReportController : ApiController
{
// ...
[Route("{id}.{ext}", Name="DownloadCsvReport")]
public HttpResponseMessage Get(int id, String ext)
{
//...
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何助手可以构建正确的URL?我正在尝试链接到MVC4.5页面中的文件,但我似乎无法获得扩展或版本:
@Url.HttpRouteUrl("DefaultApi", new { controller = "Report", ext="csv", version=1, id = 3, })
@Url.RouteUrl(routeName: "DownloadCsvReport", routeValues: new { id=123, version=1, ext = "csv"})
@Url.Action("DownloadCsvReport", new { id = 123, ext="csv" })
@Url.RouteUrl("DefaultApi", new { httproute = true, controller = "Report", id = 123, Ext="csv", version =1 })
Run Code Online (Sandbox Code Playgroud)
我认为我没有与这些中的任何一个走在正确的轨道上....他们都没有替换routeprefix中的版本或路由属性中的ext,以及其他各种问题.有没有办法在没有硬编码路径的情况下链接到URL?
c# asp.net-mvc html-helper asp.net-web-api asp.net-web-api-routing
我试图从Angular2 beta 8发布json但是标题没有被传输:
import { RequestOptions, RequestMethod, RequestHeaders, RequestOptionsArgs, Http } from 'angular2/http';
// ...
let headers = new Headers(),
body = JSON.stringify({ identifier, password });
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
let opts:RequestOptionsArgs = { headers: headers };
this.http.post(this.baseUrl + 'auth/login', body, opts)
.subscribe(
data => console.log(data),
err => console.log(err.json().message),
() => console.log('Authentication Complete')
);
Run Code Online (Sandbox Code Playgroud)
但Chrome中的XHR调用没有这些标题.Chrome调试显示Content-Type标题已标记Provisional Headers are Shown并显示Content-Type:text/plain;charset=UTF-8.标题值似乎是正确的:
console.log(headers.get('Content-Type')) // => 'application/json'
console.log(headers.get('Accept')) // => 'application/json'
Run Code Online (Sandbox Code Playgroud)
问题是我要进去RequestHeaders,但它应该是Headers.为什么它没有给我一个错误,我不知道.
从sbt运行TwitterServer时出现此错误:
SEVERE: LoadService: failed to
instantiate 'com.twitter.finagle.stats.MetricsExporter'
for the requested service 'com.twitter.finagle.http.HttpMuxHandler'
com.fasterxml.jackson.databind.JsonMappingException:
Incompatible Jackson version: 2.7.1
Run Code Online (Sandbox Code Playgroud)
2.7杰克逊的依赖从其他地方(circe)传递.我以为我可以用这种方式将它覆盖到2.6.7,但似乎没有效果:
val jacksonV = "2.6.7"
val `jackson-core` = "com.fasterxml.jackson.core" % "jackson-core" % jacksonV
val `jackson-databind` = "com.fasterxml.jackson.core" % "jackson-databind" % jacksonV
val `jackson-annotations` = "com.fasterxml.jackson.core" % "jackson-annotations" % jacksonV
val `jackson-datatype-jsr310` = "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % jacksonV
dependencyOverrides += `jackson-core`
dependencyOverrides += `jackson-databind`
dependencyOverrides += `jackson-annotations`
dependencyOverrides += `jackson-datatype-jsr310`
Run Code Online (Sandbox Code Playgroud)
知道为什么这不会覆盖任何东西吗?
我正在尝试通过设置一个根据示例文档执行 Lambda 函数的 CampaignHook 来为我的 AWS Pinpoint 项目创建一个(测试版)自定义通道。
我的 lambda 函数似乎可以单独正常工作。但是,当我将 CampaignHook 指向 lambda 函数时,我收到此错误:
> aws lambda add-permission --function-name arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName \
--statement-id s1 \
--action lambda:InvokeFunction \
--principal pinpoint.us-east-1.amazonaws.com \
--source-arn 'arn:aws:mobiletargeting:us-east-1:my-account-id:/apps/my-pinpoint-project-id/campaigns/*'
=>
{
"Statement": "{\"Sid\":\"s1\",\"Effect\":\"Allow\",\"Principal\": {\"Service\":\"pinpoint.us-east-1.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:mobiletargeting:us-east-1:my-account-id:/apps/my-pinpoint-project-id/campaigns/*\"}}}"
}
> aws pinpoint update-application-settings \
--application-id my-pinpoint-project-id \
--write-application-settings-request '{\"CampaignHook\": { \"LambdaFunctionName\": \"arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName\", \"Mode\": \"DELIVERY\" }}'
=> An error occurred (BadRequestException) when calling the UpdateApplicationSettings operation: Could not properly invoke Lambda function specified in hook.
Run Code Online (Sandbox Code Playgroud)
我的函数是用 C# 编写的,处理程序的签名是:
> …Run Code Online (Sandbox Code Playgroud) c# ×2
scala ×2
amazon-iam ×1
angular ×1
apache-kafka ×1
asp.net-mvc ×1
aws-lambda ×1
aws-pinpoint ×1
circe ×1
finagle ×1
html-helper ×1
jackson ×1
sbt ×1
slick ×1
specs2 ×1
typescript ×1