在我的restful webservice中,如果出现错误请求(5xx)或4xx respose代码,我会在响应中写一个自定义标题"x-app-err-id".
在客户端,我使用RestTemplate的交换方法来进行RestFul Web服务调用.当响应代码为2xx时,一切都很好.
ResponseEntity<Component> response = restTemplate.exchange(webSvcURL,
HttpMethod.POST,
requestEntity,
Component.class);
Run Code Online (Sandbox Code Playgroud)
但是如果有异常(HttpStatusCodeException),因为它是一个错误的请求(5xx)或4xx,在HttpStatusCodeException的catch块中,我得到响应(见上文)为null,所以我没有访问我的自定义头我在我的网络服务中设置.如果RestTemplate中存在异常,如何从响应中获取自定义标头.
还有一个问题是,我在错误的情况下在响应体中设置了一个错误对象(json),我想知道如何在RestTemplate中出现异常时访问响应体
我是新手,我有一个问题.我有一个两步过程,第一步是将SUCCESS.txt文件写入HDFS上的某个位置.我的第二步是一个spark作业,必须在开始处理数据之前验证该SUCCESS.txt文件是否存在.
我检查了spark API并没有找到任何检查文件是否存在的方法.任何想法如何处理这个?
我找到的唯一方法是sc.textFile(hdfs:///SUCCESS.txt).count(),当文件不存在时会抛出异常.我必须捕获该异常并相应地编写我的程序.我真的不喜欢这种方法.希望找到更好的选择.
我必须调用REST Web服务,我计划使用RestTemplate.我查看了如何发出GET请求的示例,如下所示.
String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class,"42","21");
Run Code Online (Sandbox Code Playgroud)
在我的例子中,RESTful url就像下面这样.在这种情况下如何使用RestTemplate?
http://example.com/hotels?state=NY&country=USA
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何发送GET请求的请求参数?
我正在尝试使用postgres数据库实现具有多个编写器和多个读取器的可靠队列.如何避免在队列读取器扫描表时丢失行,然后在读取后正在进行的事务提交.
我们有一个读者使用"检查点"时间批量选择行,其中每个批次获取上一批次中最后一个时间戳之后的行,并且我们缺少行.(原因:时间戳值基于INSERT发生的时间(00.00.00).在重负载时,如果事务需要更长的时间,它会被插入,比如10秒后(00.00.10),读者将错过这一行(row1)如果它在10秒内读取并找到一个行,其行的INSERT时间晚于(00.00.05)而不是row1.问题的完整描述类似于本博客中写的那个.http:/ /blog.thefourthparty.com/stopping-time-in-postgresql/)
相关的上下文问题:Postgres LISTEN/NOTIFY - 低延迟,实时?
更新:我已经将问题从单个读者更新到多个读者.读者阅读的顺序很重要.
我是scala的新手,所以我的问题可能完全是愚蠢的.如果我有一个像下面这样的现有方法.我将这4行添加到方法中.有没有更好的方法来处理期权价值?
def processData(input: String, dataMap: Map[String, String]): Option[String] = {
//4 lines I am adding.
val data: Option[String] = dataMap.get(input)
if (data.isEmpty) {
return None
}
//how to avoid this line
val dataValue = data.get
//20-25 lines of code in here with bunch of pattern matching case statements
cleanData(dataValue)
doSomethingElse("apple", dataValue, "test")
}
Run Code Online (Sandbox Code Playgroud)
基本上我想避免在下面的代码中执行"data.get".这称之为感觉不对.我可以使用模式匹配以不同的方式编写这个.但是20-25行代码有大量的case语句,我不想在它们之上创建另一个层.
def processData(input: String, dataMap: Map[String, String]): Option[String] = {
dataMap.get(input) match {
case Some(dataValue) => {
//20-25 lines of code in here with bunch of pattern …
Run Code Online (Sandbox Code Playgroud) resttemplate ×2
apache-spark ×1
concurrency ×1
get ×1
hadoop ×1
hdfs ×1
parameters ×1
postgresql ×1
queue ×1
request ×1
response ×1
rest-client ×1
scala ×1