因此,我有一条路由消耗一个队列中的JMS消息,并且希望将其发送到同一代理上的另一个队列。蓝图xml非常简单:
class ViewController: UIViewController {
private static let linesKey = "linesKey"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let fileURL = self.dataFileUrl()
if FileManager.default.fileExists(atPath: fileURL.path!) {
let codedData = try! Data(contentsOf: fileURL as URL)
print(codedData)
let unarchiver = try! NSKeyedUnarchiver(forReadingFrom: codedData)
if unarchiver.containsValue(forKey: ViewController.linesKey) {
print("viewDidLoad contains value")
} else {
print("viewDidLoad doesn't conains value")
}
let fourLines = unarchiver.decodeObject(forKey: ViewController.linesKey) as! FourLines?
print(fourLines?.lines?.count)
}
let app = UIApplication.shared
NotificationCenter.default.addObserver(self, selector: #selector(self.applicationWillResignActive(notification:)), name: UIApplication.willResignActiveNotification, object: app)
}
@objc func applicationWillResignActive(notification: NSNotification) {
print("applicationWillResignActive")
let fileURL = self.dataFileUrl()
print(fileURL)
let fourLines = FourLines()
let array = (self.lineFields as NSArray).value(forKey: "text") as! [String]
fourLines.lines = array
let archiver = NSKeyedArchiver(requiringSecureCoding: true)
archiver.encode(fourLines, forKey: ViewController.linesKey)
let data = archiver.encodedData
do {
try data.write(to: fileURL as URL)
} catch {
print("Error is \(error)")
}
}
@IBOutlet var lineFields: [UITextField]!
func dataFileUrl() -> NSURL {
let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
var url: NSURL?
url = URL(fileURLWithPath: "") as NSURL
do {
try url = urls.first!.appendingPathComponent("data.archive") as NSURL
} catch {
print("Error is \(error)")
}
return url!
}
}
但这不起作用!它使用并记录消息(因此连接工厂没有问题),但是在尝试发布时失败,并显示<camel:route id="from-jms-consumer-to-jms" trace="false">
<from uri="jms:queue:test" />
<log message="Message consumed :: ${body}" />
<to uri="jms:queue:other_test" />
</camel:route>
为什么?我尝试了一切:
但是,即使是这样的简单路由,在发布者上也会失败。
这是Camel 3.0.0-M4,我在JDK 9的Karaf 4.2.1上运行。没有其他问题。所有其他组件都可以工作,并且已经过单独测试。
我什至在Camel源代码中查看了java.util.concurrent.RejectedExecutionException
的代码。有一个JmsPublisher
isRunAllowed()
返回了boolean
的{{1}}。我不知道我可能会错过什么?线程池?关于JMSHeader的消息?我很困惑!
错误堆栈跟踪:
false
答案 0 :(得分:0)
我让发布商在路径(https://camel.apache.org/message-endpoint.html)上使用“ toD”而不是“ to”
现在,事务管理器仍然抛出无法记录事务的错误,这表示连接不是“ NamedXAResource” wtf,但这至少意味着发布者正在发布